IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[POO] erreur incongrue dans les require_once


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Par défaut [POO] erreur incongrue dans les require_once
    Bonjour à tous,
    Résumé du problème :
    un popup thickbox est appelé. Ce fichier se nomme commenter.phtml il est dans un dossier ./vues
    D'ordinaire les fichiers ./vues/ sont include dans un fichier index.php
    Comme se fichier est hors include habituel, j'ai ajouté les require nécessaire à son bon fonctionnement et ordinairement dans le ficgier index.php.
    Celui-ci contient plusieurs require_once de fichiers class contenus dans un dossier ./models/
    Les autres fichiers vues faisant appel à ces class ne rencontre pas (ou ne m'affiche pas) cette erreur.
    La classe SQL en cause (mais si je supprime son appel, j'ai un souci similaire avec les autres class) est une class utilisant des méthodes static.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error</b>:  syntax error, unexpected T_STATIC, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in
    Quelqu'in a-til une piste ?

    Merci de vos réponses

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    montre ton code plutot

  3. #3
    Membre éclairé Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Par défaut
    OK c'est parti...

    fichier d'appel du popup : "./helpers/dossier_helper.php"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    .../
    $barre .= "<a href='vues/commenter.phtml?id=$idossier&keepThis=true&TB_iframe=true&height=300&width=550' class='thickbox'><img src='media/image/comment.png' alt='commentez' width='20' /></a>&nbsp;";
    .../
    ce fichier est inclu dans : ./vues/dossiers.phtml
    lui même inclu dans : ./templates/ciroh_3/index.php
    Fichiers inclus via require_once et posant problème : "./core/config.inc"
    voici le code appelant la classe SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    require $baseurl."core/class/Sql.php";
    require $baseurl."core/class/Txt.php";
    require $baseurl."core/class/Mys.php";
    require $baseurl."core/class/Session.php";
    la variable $baseurl est définie dans le dernier fichier inclu ici : "./vues/commenter.phtml" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    session_start();
    $baseurl = "../";
    require_once $baseurl."/core/config.inc";
     $auth = 1;
     if($_SESSION['auth'] < $auth ){
        //header("Location: ".MyS::_RW("index.php?mode=public&view=500")."");
         echo "<script type='text/javascript'>
        $(document).ready(function(){
            window.location='".MyS::_RW('index.php?mode=public&view=500')."';
        });
        </script>";
     }
     
    require_once $baseurl."models/Dossier.php";
    require_once $baseurl."models/Fichier.php";
    require_once $baseurl."models/Membre.php";
    require_once $baseurl."helpers/color_helper.php";
    $id = $_GET['id'];
    $type = $_GET['type'];
    $userid = $_SESSION['userid'];
    $nom = "";
    if($type == "dossier"){
        $dossier = new dossiers($id);
        $nom = $dossier->_nom;
    }
    else {
        $fichier = new fichiers($id);
        $nom = $fichier->_nom;
    }
    $ctable = colorTable();
    Voici le code de la classe SQL : "./core/class/Sql.php"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
    /**
     * @author Doudies
     * @copyright 2008
     * model sql 
     */
     
    class Sql{
        static function connexion(){
            $cx = mysql_connect(DBHOST,DBUSER,DBPASS);
            //if($db = mysql_select_db(DBB,$cx)){
            if(mysql_select_db(DBB,$cx)){
                return $cx;
            }
            else{
                return "pas d'entrée";
            }
        }
    .../
    Je re précise que d'ordinaire les autres vues utilisent ces classes sans erreur. La différence fondamentale de cette vue est qu'elle s'affiche seule sans être incluse dans l'index.php c'est pourquoi il était nécessaire d'y ajouter l'appel au fichier config.inc
    Autre précision, sans le code php le popup thickbox s'affiche sans problème...

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Ok mais l'erreur est sur quelle ligne de quel fichier ?
    sur le MyS::_RW ?

  5. #5
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Cette erreur survient parce que tu es en PHP 4 et que tu utilises le mot-clef static dans la classe qui est un mot réservé PHP 5.

  6. #6
    Membre éclairé Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Par défaut
    Cette erreur s'affiche dans le fichier commenter.phtml (le popup)
    le MyS::_RW... c'est une vérif de droit il ne réagit pas dans ce cas de figure.
    Et non, ça ne peut pas venir de php 5 vs php 4. Sinon, j'aurais déjà eu ce problème dans les autres vues alors. Et le serveur est configuré avec php5...

  7. #7
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Allez ne nous fais pas languir plus longtemps, donne nous la fin du message d'erreur.
    On ne sait toujours pas quelle ligne de quel fichier est incriminée ..
    Au passage, si tu pouvais faire un echo phpversion(); et nous la donner ..

  8. #8
    Membre éclairé Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Par défaut
    OK Bisûnûrs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error:  syntax error, unexpected T_STATIC, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /homepages/38/d213646387/htdocs/ldmc/dev/ciroh_c/core/class/Sql.php on line 9
    il s'agit de l'appel de la methode de connexion...
    Mais si je vire le require config.inc le problème se reporte sur le fichier class suivant :
    Dossier.php dès sa première ligne aussi...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    /**
     * Description of dossier
     * gestion des dossiers virtuels : création, suppression, modification, verrouillage
     * @author laurent
     */
    class dossier {
        public $_id;
        public function  __construct($nom) {
            $cx = sql::connexion();
            $sql = "INSERT INTO #__dossiers (nom) VALUES ('$nom');";
            $result = sql::query($sql);
            $this->_id = sql::_id();
            sql::deconnexion($cx);
        }
    l'erreur affichée devient alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error:  syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /homepages/38/d213646387/htdocs/ldmc/dev/ciroh_c/models/Dossier.php on line 8
    ...
    Pourquoi juste sur cette vue ?

  9. #9
    Membre éclairé Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Par défaut
    version PHP : 5.2.17

  10. #10
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    "Bizarrement", dans le deuxième cas il s'agit du mot-clef public qui est inhérent à la version 5 de PHP.
    On y revient .. Ton serveur n'a pas l'air d'être en PHP5 (ou n'est pas reconnu comme tel). T'es sur WAMP ? T'as pas activé par erreur/hasard une ancienne version de PHP sans t'en rendre compte ou sans t'en souvenir ?

    Essaye de remplacer "public" par "var" à la ligne 8 de ton fichier Dossier.php, pour voir s'il bloque à la ligne suivante.

  11. #11
    Membre éclairé Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Par défaut
    Je comprend l'embarras. J'ai en fait tout de suite pensé à cette histoire de version.
    En fait je suis sur un serveur 1&1 sur mon hébergement dans un dossier de test. Tout mon site perso fonctionne avec ce genre de class. Le site de test fonctionne lui aussi avec ces class et jusqu'à ce que je décide d'afficher cette P. de vue en popup thickbox je n'ai jamais eu ce problème...
    Un autre exemple, sur le site suivant : (site où je teste mes idées) www.ld-clic.com/deckmaster
    sur la page : http://www.ld-clic.com/deckmaster/p_recapcarte.html
    le popup fonctionne, et on est sur le même serveur !!... il y a une légère différence mais sans incidence, le popup affiche la vue detail.php qui est à la racine au lieu d'être dans le dossier vue. Mais pour avoir fait des tests dans ce sens je le re dis c'est sans incidence apparente.

  12. #12
    Membre éclairé Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Par défaut
    Après test en modifiant la ligne 8 effectivement on se reporte en ligne 9. Ce qui tendrait à prouver tes intuitions... Mais alors pourquoi pas tout le site ?!

  13. #13
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    J'ai trouvé ça :
    http://videonoob.fr/tutoriel/activer-php5-1and1

    Tu as bien activé PHP5 dans ton htaccess ? Si oui, ton fichier de thickbox est bien dans l'arborescence du htaccess ou dans un dossier frère voire parent ?

  14. #14
    Membre éclairé Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Par défaut
    Oui, le php5 est activé dans le .htaccess à la racine de l'hébergement. Je l'ai ré activé à la racine du site de test. Je viens de faire un phpversion sur le fichier commenter.php et là...4.4.9 !!!! Pourquoi ? On sait que c'est ça mais pourquoi ?
    Pourquoi pas sur le site de test deckmaster ???? il y a là un mystère...

  15. #15
    Membre éclairé Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Par défaut
    La même vue appelée normalement affiche bien une version 5... (hors popup)

  16. #16
    Membre éclairé Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Par défaut
    Problème résolu !!
    J'ai ajouté dans mon fichier .htaccess à la racine du site test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AddType x-mapp-php5 .phtml
    Puisque mes vues sont en phtml. La raison est que les autres .phtml sont inclues dans un .php (index) donc c'est lui qui fait office de référence. Dans le cas où le phtml seul est appelé il échappe à la règle, il faut donc aussi la définir pour ce type de fichier.

    Merci beaucoup de votre aide Bisûnûrs et Stealth35

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. erreurs @@TRANCOUNT dans les PS
    Par Oratorio dans le forum Sybase
    Réponses: 3
    Dernier message: 15/07/2011, 17h24
  2. Erreur fatale dans les DDE
    Par carolu dans le forum SAS Base
    Réponses: 10
    Dernier message: 05/05/2011, 18h17
  3. Erreur étrange dans les logs
    Par saturn1 dans le forum Administration système
    Réponses: 4
    Dernier message: 20/09/2009, 00h49
  4. [httpd] Erreur surprenante dans les logs
    Par joseph_p dans le forum Apache
    Réponses: 3
    Dernier message: 17/02/2006, 13h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo