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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : php interprète dans un dossier mais pas dans un sous-dossier

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

par Torks » 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. :)

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

par Nagol » 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 :)

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

par stealth35 » 28 sept. 2010, 16:52

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

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

par Nagol » 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 = '';

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

par Torks » 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;

}

?>

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

par Nagol » 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.

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

par Torks » 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: ) !

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

par Nagol » 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.

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

par Torks » 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... :(

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

par Nagol » 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.

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

par Torks » 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. :(

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

par Torks » 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. ;)

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

par jojolapine » 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 :)

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

par Nagol » 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? :)

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

par jojolapine » 24 sept. 2010, 19:50

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
;)