php interprète dans un dossier mais pas dans un sous-dossier

ViPHP
ViPHP | 3300 Messages

24 sept. 2010, 19:51

essaye ce niveau d'erreur:
error_reporting = E_ALL & ~E_NOTICE
Et dis nous s'il y a encore des erreurs à l'affichage...
pourquoi enlever le notice ?
Parce que
Notice: Undefined variable: mail_webmestre in D:\EasyPHP-5.3.2i\www\joomla\cvtheque\commun\obj_configfile.php on line 66

Notice: Undefined variable: mysqlprefix in D:\EasyPHP-5.3.2i\www\joomla\cvtheque\commun\obj_configfile.php on line 72

Notice: Undefined variable: errlog_path in D:\EasyPHP-5.3.2i\www\joomla\cvtheque\commun\obj_configfile.php on line 74

Notice: Undefined variable: errlog_maxsize in D:\EasyPHP-5.3.2i\www\joomla\cvtheque\commun\obj_configfile.php on line 75

Notice: Undefined variable: errlog_level in D:\EasyPHP-5.3.2i\www\joomla\cvtheque\commun\obj_configfile.php on line 76
;)
je reformule la question de stealth pourquoi enlever les notices au lieu de faire du code digne de ce nom? :)
Fait du php depuis que ca existe ou presque :)

ViPHP
ViPHP | 3607 Messages

24 sept. 2010, 20:07

parceque le pauvre reprend des scripts de droite et de gauche et que le développement n'a pas l'air d'être sa réelle mission...
Après, c'est sur que c'est mal, mais faut être un peu pratique des fois :)

Eléphanteau du PHP | 22 Messages

26 sept. 2010, 12:53

Merci pour l'astuce du niveau d'erreur E_ALL ~E_NOTICE, je regarderai ça demain (bon, OK je surveille mes mails pro & les sujets pour le boulot le week-end, mais c'est pas une raison!) ...

Sinon, pour faire du code digne de ce nom, c'est mon chef qui m'a envoyé une archive avec l'application cvtheque, je ne sais pas d'où il l'a trouvée (sachant qu'il m'a clairement dit que le développement Web n'était pas son truc, hein!), et tout ce que j'ai retenu de mes cours sur php c'est du niveau d'un "echo 'hello world';" :D

Donc si quelqu'un veut bien se dévouer pour améliorer l'appli, je ne suis pas contre de lui envoyer, mais en attendant le retrait des notices sera déjà un bon point, si ça fonctionne. ;)

Eléphanteau du PHP | 22 Messages

27 sept. 2010, 09:21

essaye ce niveau d'erreur:
error_reporting = E_ALL & ~E_NOTICE
Et dis nous s'il y a encore des erreurs à l'affichage...
Alors, après avoir essayé (à l'instant!), le niveau error_reporting = E_ALL & ~E_NOTICE ne met plus d'erreurs à l'affichage.

Mais ça me rend une page blanche. :(

ViPHP
ViPHP | 3300 Messages

27 sept. 2010, 15:42

essaye ce niveau d'erreur:
error_reporting = E_ALL & ~E_NOTICE
Et dis nous s'il y a encore des erreurs à l'affichage...
Alors, après avoir essayé (à l'instant!), le niveau error_reporting = E_ALL & ~E_NOTICE ne met plus d'erreurs à l'affichage.

Mais ça me rend une page blanche. :(
typiquement ca veut dire que tes notices sont sans doute plus grave fonctionellement que prévu, ça fait partie des raisons pour lesquelles il est essentiel de développer des applis qui ne font pas des notices dans tous le sens.
Fait du php depuis que ca existe ou presque :)

Eléphanteau du PHP | 22 Messages

27 sept. 2010, 16:08

typiquement ca veut dire que tes notices sont sans doute plus grave fonctionellement que prévu, ça fait partie des raisons pour lesquelles il est essentiel de développer des applis qui ne font pas des notices dans tous le sens.
Traduction, je suis mal barré :lol:

En plus, je n'arrive pas à joindre l'archive qui contient le dossier de la cvtheque... :(

ViPHP
ViPHP | 3300 Messages

27 sept. 2010, 16:48

Les notices sont rarement complexes à corriger, on s'en sort avec un isset ou deux dans 90% des cas si tu veux on peut réactiver les notices et essayer de corriger ça au fur et à mesure.
Fait du php depuis que ca existe ou presque :)

Eléphanteau du PHP | 22 Messages

27 sept. 2010, 16:56

J'ai réactive les notices, et les voici :
Notice: Undefined variable: mail_webmestre in D:\EasyPHP-5.3.2i\www\joomla\cvtheque\commun\obj_configfile.php on line 66

Notice: Undefined variable: mysqlprefix in D:\EasyPHP-5.3.2i\www\joomla\cvtheque\commun\obj_configfile.php on line 72

Notice: Undefined variable: errlog_path in D:\EasyPHP-5.3.2i\www\joomla\cvtheque\commun\obj_configfile.php on line 74

Notice: Undefined variable: errlog_maxsize in D:\EasyPHP-5.3.2i\www\joomla\cvtheque\commun\obj_configfile.php on line 75

Notice: Undefined variable: errlog_level in D:\EasyPHP-5.3.2i\www\joomla\cvtheque\commun\obj_configfile.php on line 76
Je crois avoir déjà mis le fichier obj_configfile.php, sinon je le remettrai demain (marre de ma journée là :evil: ) !

ViPHP
ViPHP | 3300 Messages

27 sept. 2010, 18:53

J'ai réactive les notices, et les voici :
Notice: Undefined variable: mail_webmestre in D:\EasyPHP-5.3.2i\www\joomla\cvtheque\commun\obj_configfile.php on line 66

Notice: Undefined variable: mysqlprefix in D:\EasyPHP-5.3.2i\www\joomla\cvtheque\commun\obj_configfile.php on line 72

Notice: Undefined variable: errlog_path in D:\EasyPHP-5.3.2i\www\joomla\cvtheque\commun\obj_configfile.php on line 74

Notice: Undefined variable: errlog_maxsize in D:\EasyPHP-5.3.2i\www\joomla\cvtheque\commun\obj_configfile.php on line 75

Notice: Undefined variable: errlog_level in D:\EasyPHP-5.3.2i\www\joomla\cvtheque\commun\obj_configfile.php on line 76
Je crois avoir déjà mis le fichier obj_configfile.php, sinon je le remettrai demain (marre de ma journée là :evil: ) !
undefined variable arrive typiquement dans le cas ou tu concatènes dans une variable pas initialisée, il suffit alors de déclarer tes variables avant.
$mail_webmestre = '';
$errlog_path = '';
$errlog_maxsize = 0;
$errlog_level = 0;
J'extrapole le type de variable en fonction du nom de celle ci parce que je n'ai pas le code sous les yeux, mais ça devrait être à peu prêt ça.
Fait du php depuis que ca existe ou presque :)

Eléphanteau du PHP | 22 Messages

28 sept. 2010, 08:05

Voici le code du fichier, qui devrait je pense te permettre de valider que tu as bien deviné le type des variables à initialiser. :)
<?
// +----------------------------------------------------------------------+
// | OpenCVthèque                                                         |
// +----------------------------------------------------------------------+
// | Ce programme est un logiciel libre ; vous pouvez le redistribuer     |
// | et/ou le modifier conformément aux dispositions de la Licence        |
// | Publique Générale GNU, telle que publiée par la Free Software        |
// |  Foundation ; version 2 de la licence, ou encore (à votre choix)     |
// | toute version ultérieure.                                            |
// | Ce programme est distribué dans l'espoir qu'il sera utile, mais      |
// | SANS AUCUNE GARANTIE ; sans même la garantie implicite de            |
// | COMMERCIALISATION ou D'ADAPTATION A UN OBJET PARTICULIER. Pour plus  |
// | de détail, voir la Licence Publique Générale GNU .                   |
// |                                                                      |
// | Vous devez avoir reçu un exemplaire de la Licence Publique Générale  |
// | GNU en même temps que ce programme ; si ce n'est pas le cas,         |
// | écrivez à la Free Software Foundation Inc., 675 Mass Ave, Cambridge, |
// | MA 02139, Etats-Unis                                                 |
 //+----------------------------------------------------------------------+
// | Web              : http://sourceforge.net/projects/opencvtheque/     |
// +----------------------------------------------------------------------+
// | Authors          : (Auteur original) [email protected]        |
// |                  : (Mainteneur 2007-.) [email protected]      |
// +----------------------------------------------------------------------+
// | Objet de manipulation du fichier de configuration                    |
// +----------------------------------------------------------------------+


///////////////////////////////////
// Définition de l'objet
class ConfigFile
{

    //////////// CONSTRUCTEURS ////////////
    function ConfigFile($filename)
    {
        $this->_empty        = TRUE;
        $this->_filename    = $filename;
        
        $this->Load();
    }


    //////////// METHODES PUBLIQUES ////////////

    function Load()
    {
        // on évite de faire un include simple, car qq'un pourrai comme ça inclure n'importe quoi (sécurité)
        // alors on refait une sorte d'include:
        // - on lit le contenu du fichier de conf
        // - on fait un eval() du contenu
        // - on assigne aux variables de classe les variables du contexte
        // Plus tard il faudra vérifier quand même l'emplacement du fichier de conf, son contenu, etc.
        // pour éviter les failles trop faciles à exploiter...
        if( !($f = @fopen($this->_filename, "r")) ) { return FALSE; }
        while( !@feof($f) )
        {
            if( ($buff = @fgets($f, 4096)) != "" )
            {
                @eval($buff);
            }
        }
        @fclose($f);
        
        $this->install_status    = $install_status;
        $this->mail_webmestre    = $mail_webmestre;
        
        $this->mysqlserver        = $mysqlserver;
        $this->mysqlloggin        = $mysqlloggin;
        $this->mysqlmaindb        = $mysqlmaindb;
        $this->mysqlpassword    = $mysqlpassword;
        $this->mysqlprefix        = $mysqlprefix;

        $this->errlog_path        = $errlog_path;
        $this->errlog_maxsize    = $errlog_maxsize;
        $this->errlog_level        = $errlog_level;

        $this->ldap_enabled            = $ldap_enabled;
        $this->ldap_serveur            = $ldap_serveur;
        $this->ldap_base_dn            = $ldap_base_dn;
        $this->ldap_user_suffixe    = $ldap_user_suffixe;
    
        $this->_empty = FALSE;
    
        return TRUE;
    }

    function Save()
    {
        return $this->SaveAs($this->_filename);
    }

    function SaveAs($filename)
    {
        if( !($f = @fopen($filename, "w+")) ) { return FALSE; }
        @fputs($f, $this->_Serialise());
        @fclose($f);

        return TRUE;
    }

    //////////// VARIABLES PUBLIQUES ////////////
    var $install_status;
    var $mail_webmestre;

    var $mysqlserver;
    var $mysqlloggin;
    var $mysqlmaindb;
    var $mysqlpassword;
    var $mysqlprefix;
    
    var $errlog_path;
    var $errlog_maxsize;
    var $errlog_level;
    
    var $ldap_enabled;
    var $ldap_serveur;
    var $ldap_base_dn;
    var $ldap_user_suffixe;


    //////////// METHODES PRIVEES ////////////
    function _Serialise()
    {
        $result = "<?php";
        $result.= "\n// Ce fichier est généré automatiquement. Vous devez savoir ce que vous faites si vous devez le modifier.\n";
        $result.= "\n// Général";
        $result.= "\n"."\$install_status\t= '".$this->install_status."';";
        $result.= "\n"."\$mail_webmestre\t= '".$this->mail_webmestre."';";
        $result.= "\n";
        $result.= "\n// Paramétres d'accès à la base MySQL";
        $result.= "\n"."\$mysqlserver\t= '".$this->mysqlserver."';";
        $result.= "\n"."\$mysqlloggin\t= '".$this->mysqlloggin."';";
        $result.= "\n"."\$mysqlpassword\t= '".$this->mysqlpassword."';";
        $result.= "\n"."\$mysqlmaindb\t= '".$this->mysqlmaindb."';";
        $result.= "\n"."\$mysqlprefix\t= '".$this->mysqlprefix."';";
        $result.= "\n";
        $result.= "\n// Journaux d'événements";
        $result.= "\n@include_once('../commun/logerrors.php'); // définitions des constantes globales";
        $result.= "\n@include_once('commun/logerrors.php'); // définitions des constantes globales";
        $result.= "\n"."\$errlog_path\t= '".$this->errlog_path."';";
        $result.= "\n"."\$errlog_maxsize\t= ".$this->errlog_maxsize.";";

        @include_once("../commun/logerrors.php");
        @include_once("commun/logerrors.php");
        global $CVT_LOG_LEV_TXT;
        $result.= "\n"."\$errlog_level\t= ".$CVT_LOG_LEV_TXT[$this->errlog_level].";";

        $result.= "\n";
        $result.= "\n// Connexion LDAP";
        $result.= "\n// Note: le fait d'utiliser LDAP désactive la création d'entreprises et de cnadidats.";
        $result.= "\n"."\$ldap_enabled\t= ".($this->ldap_enabled===true?"true":"false").";";
        $result.= "\n"."\$ldap_serveur\t= '".$this->ldap_serveur."';";
        $result.= "\n"."\$ldap_base_dn\t= '".$this->ldap_base_dn."';";
        $result.= "\n"."\$ldap_user_suffixe\t= '".$this->ldap_user_suffixe."';";
        $result.= "\n\n?>";
        
        return $result;
    }

    //////////// VARIABLES PRIVEES ////////////
    var $_filename;
    var $_empty;

}

?>

ViPHP
ViPHP | 3300 Messages

28 sept. 2010, 16:06

change:

    //////////// VARIABLES PUBLIQUES ////////////
    var $install_status;
    var $mail_webmestre;

    var $mysqlserver;
    var $mysqlloggin;
    var $mysqlmaindb;
    var $mysqlpassword;
    var $mysqlprefix;
   
    var $errlog_path;
    var $errlog_maxsize;
    var $errlog_level;
   
    var $ldap_enabled;
    var $ldap_serveur;
    var $ldap_base_dn;
    var $ldap_user_suffixe;
vers

    //////////// VARIABLES PUBLIQUES ////////////
    var $install_status = false;
    var $mail_webmestre = '';

    var $mysqlserver = '';
    var $mysqlloggin = '';
    var $mysqlmaindb = '';
    var $mysqlpassword = '';
    var $mysqlprefix = '';
   
    var $errlog_path = '';
    var $errlog_maxsize = 0;
    var $errlog_level = 0;
   
    var $ldap_enabled = false;
    var $ldap_serveur = '';
    var $ldap_base_dn = '';
    var $ldap_user_suffixe = '';
Fait du php depuis que ca existe ou presque :)

ViPHP
ViPHP | 5462 Messages

28 sept. 2010, 16:52

et mettre public a la place de var aussi (php 4 c'est fini) :wink:

ViPHP
ViPHP | 3300 Messages

28 sept. 2010, 20:08

et mettre public a la place de var aussi (php 4 c'est fini) :wink:
autant je suis pour autant je vais pas me lancer dans un rewrite complet de sa classe aux normes :)
Fait du php depuis que ca existe ou presque :)

Eléphanteau du PHP | 22 Messages

29 sept. 2010, 13:13

change:

    //////////// VARIABLES PUBLIQUES ////////////
    var $install_status;
    var $mail_webmestre;

    var $mysqlserver;
    var $mysqlloggin;
    var $mysqlmaindb;
    var $mysqlpassword;
    var $mysqlprefix;
   
    var $errlog_path;
    var $errlog_maxsize;
    var $errlog_level;
   
    var $ldap_enabled;
    var $ldap_serveur;
    var $ldap_base_dn;
    var $ldap_user_suffixe;
vers

    //////////// VARIABLES PUBLIQUES ////////////
    var $install_status = false;
    var $mail_webmestre = '';

    var $mysqlserver = '';
    var $mysqlloggin = '';
    var $mysqlmaindb = '';
    var $mysqlpassword = '';
    var $mysqlprefix = '';
   
    var $errlog_path = '';
    var $errlog_maxsize = 0;
    var $errlog_level = 0;
   
    var $ldap_enabled = false;
    var $ldap_serveur = '';
    var $ldap_base_dn = '';
    var $ldap_user_suffixe = '';
Merci pour l'astuce. :)

Là je suis en prestation chez un gros client donc je ne peux pas m'occuper de l'application cvtheque, mais dès que possible je teste. :)