PDA

Voir la version complète : Problème sur fonction "Require"


Quetzalcoatl
18/09/2007, 15h29
Bonjour,

Je développe un petit site en PHP en utilisant en locale sur ma machine WAMP5 version 1.7.3(Apache 2.2.4
PHP 5.2.4), sous Windows XP, chez moi pas de problème tout fonctionne bien. .Hors lorsque j'installe le tout sur OVH, j'obtiens les messages suivants :

Warning: require(script_02.php) [function.require]: failed to open stream: No such file or directory in /home.2/xxxxxx/www/Tests/xxxxxxxxxx/includes/script_03.php on line 62

Fatal error: require() [function.require]: Failed opening required 'script_02.php.php' (include_path=':/home.2/xxxxxx/www/includes:/home.2/xxxxxx/www/Tests/xxxxxxxxxx/includes') in

Précisions : le premier script, appelons-le script_01, que je lance se trouve dans le répertoire "Tests/xxxxxxxxxx/yyyyyyyyyy/", depuis ce script, j'appelle le script "/Tests/xxxxxxxxxx/includes/script_03.php", ce dernier appelle un script, disons script_02 se trouvant dans le même répertoire que ce dernier,à savoir "Tests/xxxxxxxxxx/yyyyyyyyyy/", le nom du script étant une variable dans script_03.php.

J'avoue ne pas comprendre, à moins, d'une différence de paramétrage dans Apache ou PHP, ou d'une différence de traitement entre les systèmes Windows et Linux, ce qui dépasse mes compétences actuelles, j'ai parcouru par le paramétrage avec PHPInfo sur OVH, mais tout n'est pas affiché par rapport à ma version en locale, et sur que je pouvais étudier rien ne m'a paru en rapport avec mon problème.

Autre précision, il y a une semaine j'utilisais WAMP5 1.7.0 (Apache 2.2.4 et PHP 5.2.1) en locale, et tout fonctionnait bien aussi.

Si quelqu'un à une idée, je sèche lamentablement.

Merci par avance pour vos réponses.

Quetzalcoatl

Green Hornet
18/09/2007, 15h49
essaye en indiquant /home/ au lieu de /home.2/ en espérant qeu tu ne retrouveras pas confronté à mon soucis...

Quetzalcoatl
18/09/2007, 15h54
Ne cherchez plus, je viens de refaire un test avec une autre version, cela marche un peu mieux plus de messages, mais tout ne fonctionne pas, je ne m'explique pas pour autant pourquoi ce qui marche sur ma machine ne fonctionne pas sur le serveur OVH, à part un problème de paramétrage dans mes variables, mais je ne vois pas ou?

Quetzalcoatl
18/09/2007, 15h56
essaye en indiquant /home/ au lieu de /home.2/ en espérant qeu tu ne retrouveras pas confronté à mon soucis...

Je ne pense pas que cela vienne de là, j'accède parfaitement à mes fichiers INCLUDE par ailleurs, dans la première partie du premier script.

Merci quand même.

Green Hornet
18/09/2007, 16h51
oui mais oui mais il est conseillé d'utilser le /home/ et non les autres "versions" ... si ça peut aider à ne pas rencontrer des problèmes dans un avenir plus ou moins proche... ;)

Quetzalcoatl
18/09/2007, 17h26
oui mais oui mais il est conseillé d'utilser le /home/ et non les autres "versions" ... si ça peut aider à ne pas rencontrer des problèmes dans un avenir plus ou moins proche... ;)

J'ai suivi ton conseil, cela ne change strictement rien.

Mais alors que le problème semblait corrigé, sans que je comprenne vraiment pourquoi d'ailleurs, j'avais juste transféré à nouveau tous les scripts, en voulant en résoudre un autre, et je ne sais si cela est suite a cette dernière manipulation, mais je ne vois aucun rapport, le problème est réapparu. Je vais tout installer à nouveau pour voir...

Je constate que tu as des problèmes intermittant aussi.

Green Hornet
18/09/2007, 17h29
yep des caractères bizarroïdes ont en remplacés d'autres sur 2 scripts en lieu aux lignex qui m'étaient indiqués par l'erreur mais pour les voir, faut bien ouvrir les yeux... pourquoi sont-t-il apparus et comment, là par contre, je seiche ...

pour le /home/ c'est plus sur si jamais tes scripts et ton compte sont migrés sur un autre serveur ;)

Abogil
18/09/2007, 17h46
Pour une meilleure compatibilité avec ton serveur WAMP5 sur ton micro, utilise des chemins relatifs.

Quetzalcoatl
19/09/2007, 15h42
Pour une meilleure compatibilité avec ton serveur WAMP5 sur ton micro, utilise des chemins relatifs.

Bonjour,

je ne pense pas que cela vienne de là. J'ai supprimé toutes les lignes ou il y avait un chemin d'accès absolu, et j'ai toujours le problème. Par ailleurs, sur mon PC, j'ai deux versions, une première de développement et une autre d'exploitation, la deuxième est généré par une moulinette de mon cru (suppression des commentaires, lignes superflues, etc...). Hors, sur mon PC l'exécution de ses deux versions ne posent aucuns problèmes, par contre si j'installe les deux versions dans deux répertoires de tests différents sur le serveur d'OVH, seul la version de développement fonctionne parfaitement, il y a donc dans version d'exploitation une coquille qui génère uniquement des erreurs sur le site d'OVH. Je poursuis mes investigations.

Merci quand même pour vos suggestions.

Quetzalcoatl.

Quetzalcoatl
19/09/2007, 17h03
Bon,

j'ai modifié le paramétrage dans PHP pour qu'il m'affiche toutes les erreurs, le résultat est cinq notices sur des variables non déclarées. Après correction, j'ai repassé ma moulinette, réinstallé sur OVH, maintenant, cela marche :eek: :confused: ????????

Je ne comprend toujours pas pourquoi la version de développement marchait, alors que les erreurs étaient présentes, je n'ai fait que rajouter cinq lignes de déclaration de variables.

Pour comprendre, je viens de mettre en commentaire les cinq lignes que j'ai rajouté, j'ai repassé la moulinette, installé sur OVH, cela marche.:eek: :confused: :confused: :confused: :confused: :confused:

Je laisse tomber pour le moment, cela marche à nouveau, c'est le principale, mais des fois il y a de quoi devenir chèvre, maiiiiiiiiiiiis, y'a pas de mais.

Merci à tous.

Quetzalcoatl
19/09/2007, 17h23
La dernière pour rigoler,

après avoir décommenté les cinq lignes de déclarations de variables sur mon PC, je me suis retrouvé avec la même erreur que sur le serveur d'OVH, agaga, agaga, agaga.

Quetzalcoatl
19/09/2007, 18h13
Eureka,

Le problème se situe dans un de mes scripts de configuration de mon site, ou je paramètre, entre autre, le chemin d'accès au répertoire includes en utilisant la fonction Set_Include_Path. Dans un premier temps, j'utilisais la syntaxe suivante :

Set_Include_Path(Get_Include_Path().$Includes_Chem in_Acces);

PS : Le PATH_SEPARATOR est déclaré dans $Includes_Chemin_Acces.

Mais, là aussi, j'ai eu des problèmes sur le serveur OVH que j'avais résolu en utilisant la syntaxe suivante:

Set_Include_Path($Includes_Chemin_Acces);

J'avais donc pris l'habitude de mettre cette syntaxe sur le serveur.

Ma nouvelle version n'apprécie pas cette syntaxe pour la raison suivante j'utilise la fonction Require avec des scripts ce trouvant dans le répertoire courant, hors, apparemment, pour que cela fonctionne, il faut avoir déclarer
dans l'include_path un point représentant le répertoire courant, une bonne syntaxe est donc soit:

$Includes_Chemin_Acces = PATH_SEPARATOR.'/home/xxxxxxxxxx/www/includes';
Set_Include_Path(Get_Include_Path().$Includes_Chem in_Acces);

Je viens de refaire un test sur le serveur OVH, cela fonctionne, ou alors :

$Includes_Chemin_Acces = '.'.PATH_SEPARATOR.'/home/xxxxxxxxxx/www/includes';
Set_Include_Path($Includes_Chemin_Acces);

Merci, quand même, à ceux qui ce sont penchés sur mon problème et désolé de leur avoir fait perdre du temps, cette manipulation dans un script coté serveur OVH, mais jusqu'a présent cela ne m'avait posé aucun problème.