Page 1 sur 1

common.php introuvable par mon site

Posté : 05 avr. 2009, 00:18
par Henri KI ?
Bonsoir à tous,

Phpfrance ! Ca doit être parfait (du moins je l'imagine vu le nom de ce forum).

Pour commencer, le message d'erreur qui vous évitera peut-être la lecture de mon interprétation :

Code : Tout sélectionner

Warning: include_once(/common.php) [function.include-once]: failed to open stream: No such file or directory in /var/www/admin/html/index.php on line 2 Warning: include_once() [function.include]: Failed opening '/common.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/admin/html/index.php on line 2 Fatal error: Call to undefined function pt_register() in /var/www/admin/html/index.php on line 4
On m'a demandé de réinstaller la totalité d'un site qui comportait des sous-domaines. Après avoir configuré apache correctement pour ça, réinstallé une nouvelle base de données à l'identique, etc.
Je bloque sur un problème :
J'ai une erreur m'indiquant qu'il est impossible de charger "common.php", ou encore "include.php" or il se trouve que ce fichier se situe dans un dossier "common" qui est à un tout autre endroit et qui est utilisé par tous les sous-domaines. Ce dossier comprend de nombreux fichiers communs à tous les sites. Il comprend par exemple les codes et id pour l'accès à la bdd.
J'ai placé ces fichiers dans les chemins que je croyais qu'il m'indiquait : /usr/share/php et /usr/share/pear
Mais rien n'y fait...
Ca commence à faire longtemps que je cherche, donc je me tourne vers vous pour vous demander de l'aide.

Merci d'avance à ceux qui prendront le temps de m'aider à régler ce problème.

Henri

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 05 avr. 2009, 10:05
par stopher
Salut ,

Tu as bien fait de les mettre dans les PATH , bien que tu n'as pas besoin de mettre ces fichiers dans touts .. un seul aurait suffi ( c meme mieux en cas de modif du code d'un de ces fichiers )

Maintenant , dans ton include_once(/common.php) , il te faut retirer le slashe "/" , qui annule la recherche dans les dossiers d'include path .

Maintenant au lieu de copier tous les fichiers dans un path de l'include_path , tu peux simplement ajouter une entrées dans l'include path , qui va t'éviter de déplacer le moindre fichier ..

Par contre , tu n'échappes pas à retirer "/" dans les include_once()...

Voilà , en espérant t'avoir aidé ..

Ch.

Posté : 08 avr. 2009, 00:08
par Henri KI ?
Merci beaucoup pour ta réponse.
Je comprends déjà beaucoup mieux maintenant.
Par contre je ne suis pas du tout sorti d'affaire...
En effet, si enlever le slash ( / ) fonctionne tout à fait, je ne peux pas me le permettre, ça représente des centaines de fichiers à aller changer à la main.

Comme je l'expliquais j'essaie de remettre en route un site dont je sais qu'il a tourné comme ça avec ce code, j'ai essayé de mettre ce fameux fichier common.php dans tous les répertoires en partant de la racine jusqu'au fichier qui l'appelle, histoire de voir où il apprécierait qu'il soit ! Rien n'y fait.

Les fichiers que j'ai récupéré ce décomposnte en 2 dossiers à la racine :
-Site (avec ensuite pleins de sous répertoires représentant autant de sites et pleins de sous-repertoires (dans lesquels se situent les fichiers qui appellent ce common.php en premier)
-Common (comprend un dossier 'include' et un dossier 'common')

Donc j'imagine que c'était censé marcher avec cette architecture, d'où peut-être cette histoire de / que vous trouvez bizarre. Mais je ne sais pas comment configurer tout ça. Peut-être dois-je changer quelque-chose dans mon php.ini pour qu'il aille chercher les dossiers au bon endroit, mais ça n'explique toujours pas pourquoi l'instruction dit d'aller chercher common.php à la racine du site...
Je ne sais,
Je suis malheureusement totalement largué sur ce coup là :( C'est bête car j'ai déjà vachement avancé, il ne me manque plus que ce détail à régler...

Merci pour les explications en tous cas.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 08 avr. 2009, 07:59
par stopher
Il te faut alors reproduire l'ancienne architecture , si tu ne peut pas toucher aux fichiers ..

Pas besoin de copier les rep , cree juste des liens symboliques.

Par exemple , mon ancien site recherche des fichiers via le chemin reel :

include '/var/www/monsite/lib.php';

Seulement , j'ai déplacé mon site , suite à un changement de serveur , le chemin reel devient donc par exemple :

/home/webuser/monsite.com/

Donc si je souhaite qu'il fonctionne , je devrais modifier mon chemin dans l'include , ou alors creer un lien symbolique :

ln -s /home/webuser/monsite.com /var/www/monsite

Et voilà ...
C'est pas ce qu'il y a de mieux , mais disons que ça peut te dépanner ...

Il est vrai qu'il serait plus judicieux d'utiliser des chemins relatifs au dossier courant , que des chemin réel ...

cependant , dans tes lignes d'exemple , ce qui m'étonne , c'est que le chemin en question est "/"

Résolu

Posté : 08 avr. 2009, 11:36
par Henri KI ?
Encore merci pour ton aide et le temps passé à me répondre.

Ce fameux / n'est-il pas du au fait que le site était codé en php4, les quelques lectures que j'ai pu faire me font penser que c'est peut-être ça (sans doute pas, mais j'y connais pas grand chose en fait).

De manière générale, est-il possible que mes erreurs viennent du fait que c'est du php4 sur du serveur php5 ?

En fait, j'ai passé tellement de temps à essayer de comprendre ce problème que j'ai fini par me dire que j'aurais plus vite fait de modifier tous mes fichiers à la main, c'est donc ce que j'ai fait cette nuit.
Ainsi, grâce à ton aide, toutes mes erreurs d'include etc sont réglées.
En revanche, maintenant j'ai de nouvelles erreurs (ben oui, c'est pas marrant sinon !), je me demande si elles ne viennent pas de cette fameuse histoire de version.
Mon serveur est éteint et je ne sais pas si je vais réussir à trouver le temps nécessaire maintenant mais je posterais un nouveau topic pour expliquer ceci dès que je peux.

Encore merci à toi, tu m'as vraiment bien aidé :)

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 08 avr. 2009, 11:49
par stopher
Pour le passage d'un site php4 -> php5 , il peut effectivement y avoir quelques modifications à apporter pour que le site fonctionne .. tout dépend comment il a été codé .

Bonne continuation ,

Ch.

Posté : 10 avr. 2009, 08:56
par Henri KI ?
Bon, maintenant que j'ai l'impression de comprendre un peu mieux, j'aimerais être sûr d'être au clair avec ces concepts.
Ce site quand il était encore en ligne fonctionnait parfaitement avec le code tel qu'il est (c-a-d avec ce fameux "/common" et un slash devant chaque fichier d'include), le seul moyen que j'ai trouvé pour débloquer la situation est d'enlever ce / dans tous les fichiers, mais cela me génère ensuite d'autres erreurs, j'ai peur d'avoir au fur et à mesure à en corriger de nouvelles et qu'au final il y ait toujours des disfonctionnements car certains chemins absolus ne sont plus bons.
En effet, je pense que mon problème vient sans doute en grande partie d'une architecture que je n'arrive pas à remettre en place, en effet, je suis repasser hier en php4 et j'ai encore de nombreuses erreurs.

Ainsi, que veut dire ce "/" ? Que les fichiers doivent se trouver à la racine du site ? Qu'appelle-t-on racine du site lorsqu'il y a des sous-domaines ? J'ai peur d'être un peu largué sur ce coup là, ce n'est pas faute de faire preuve de bonne volonté pourtant...

Je vous expose exactement l'architecture du site voir si vous pouvez m'aider à réinstaller tel quel :

A la racine du système Linux, un dossier /SITE contenant la totalité du site, ce dossier contient :
-Site1 (avec tous les fichiers et sous-domaines)
-Common (avec un dossier include et un dossier site_common)

Le dossier site1 comprend ensuite plusieurs sous-dossier qui représentent autant de sous-domaine (sous-domaine1, 2, 3, etc).

Ce que j'ai fait c'est que j'ai copié tel quel la totalité dans un dossier /SITE à la racine du système Linux, et j'ai indiqué à Apache dans le /httpd/conf la racine SITE. En faisant comme ça, ça ne fonctionne pas puisqu'il me sert l'erreur présentée en début de topic.

Je n'ai aucune idée de ce qu'il faut que je fasse pour remédier à cela, mais je sais que si je veux que ça marche le mieux possible il faudrait que je n'ai pas à retoucher le code mais plutôt que j'arrive à refaire l'architecture telle quelle avec les bons chemins...

En espérant que quelqu'un arrive à m'aider sur cet épineux problème,

Merci de m'avoir lu :)

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 10 avr. 2009, 12:06
par Ryle
Selon le contexte, le "/" peut avoir deux signification (bien que les deux correspondent à la racine, il ne s'agit pas de la même racine pour autant).

Dans du code HTML, commencer un chemin par un "/" signifie que tu donnes un chemin global, à partir de la racine de l'url, c'est à dire le nom de domaine. Ainsi : "/maPage.php" équivaut à "http://urldemonsite.com/maPage.php"

Dans le système de gestion de fichier (donc les includes de php, les fopen, etc.), commencer un chemin par un "/" signifie que tu donne un chemin global, à partir de la racine de la partition du disque dur. Ainsi "/maPage.php" va aller chercher à la racine du disque ( "/" ou "C:\" par exemple) le fichier maPage.php.

En gros, d'après ce que tu nous as dit, tu devrais logiquement trouver sur ton disque un fichier common.php au même niveau que ton dossier SITE :)

Ceci s'oppose aux chemins "relatifs" qui vont aller chercher l'élément non pas en partant de la racine (du serveur ou de l'url), mais en partant de celui qui le demande. Ainsi "./" (facultatif) fait référence au dossier courrant et "../" au dossier parent.

Posté : 10 avr. 2009, 13:44
par Henri KI ?
Super !
Ca c'est de l'explication carrée, merci M'sieur :)
J'en ai appris des choses sur ce coup là, ça fait plaisir.
Quand tu dis au même niveau que le dossier SITE, ça veut dire "à côté" et non pas "dedans" comme c'est le cas actuellement si je comprends bien ?
Problème :
Ce "SITE" à la base occupe une partition complète, j'imagine que si je mets mes "common" à la racine du système de fichier Linux ça devrait aller non ? Parce que vu que tu parles de racine de la partition... Enfin bref, je vais tester différentes options et vous dire s'il y en a une qui fonctionne (je croise les doigts). Ce qui m'inquiète le plus c'est qu'il me semble bien que j'avais déjà tenté la manip', je vais réessayer maintenant que je suis mieux informé.

Autre chose qui me chiffonne dans cette histoire, le fichier common.php se situe lui même dans un sous-dossier "site_common", je suis surpris d'avoir récupéré un backup qui se présente sous cette forme alors que si j'ai bien compris, tous les fichiers devraient être mis en bordel dans la racine de mon site sans être dans un dossier. Ca me surprend aussi que l'ancien gestionnaire du site ait choisi un "rangement" aussi bordélique. Je pense que son rangement devait fonctionner tel que je l'ai récupéré mais que peut-être j'ai mal réglé apache ou ses sous-domaines ce qui ferait qu'il ne s'y retrouve pas.

En tous cas, grâce à tes explications j'en sais beaucoup plus et je vais pouvoir réfléchir plus posément à l'architecture des dossiers que j'ai récupéré, et à la manière de faire marcher ce code sans y toucher.

Encore merci :)

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 10 avr. 2009, 15:39
par Henri KI ?
Ryle t'es trop un boss :)

J'ai eu des petits problèmes de gestion de droits sur les dossiers et fichiers à régler à la main à divers endroits, mais j'ai bien l'impression que ça fonctionne.
En espérant ne pas découvrir des coquilles par-ci par là, mais ce sera sans doute le cas, il y a de très nombreux fichiers.

En tous cas un immense merci à toi, car aujourd'hui j'ai vraiment bien avancé :)

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 10 avr. 2009, 16:28
par Ryle
Y a pas de quoi ! :) (J'te colle un résolu pour la peine, mais va quand même falloir que tu penses à t'inscrire pour le faire toi même ;))

Posté : 10 avr. 2009, 17:17
par Henri KI ?
C'est clair :) Merci pour le résolu.
D'autant que mon petit doigt me dit que je risque de pas mal traîner mes guêtres dans le coin vu que je compte très sérieusement me mettre à php de manière plus soutenue et qu'en plus j'imagine bien que je vais encore avoir nombre de problèmes juste sur la remise en route de ce fameux site que je n'ai pas codé.

Edit :Embryon... embryon... non mais...
Comment il sait que j'ai déjà posté 7 messages ? Adresse ip ? Et de quel droit m'attribue-t-il les inepties que cet invité qui n'y connait rien est venu déverser sur ce forum ?!? (je blague bien sûr, je préfère vous le dire tout de suite, je suis un adepte du seconde degré).