[Resolu] PHP : Unknown: failed to open stream

Bonjour,
Bon ça fait maintenant 5 heures que je suis là dessus, et j’ai plus les idées claires à mon avis. Voilà les messages d’erreur lorsque je veux ouvrir avec mon navigateur un fichier.php dans un repertoire de mon “site” web :

[quote]Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0[/quote]C’est embêtant ce Unknow, de message ne me permet pas de savoir d’où ça vient, c’est quoi Unknow comme fichier ? le .php ?
(En plus, tout mais .php sont avec un icone en Point d’interrogation, je suis pas sur que c’était le cas avant)
et ensuite vient ça :

/home/ftp-www-users/TEST/mes_fonctions.php ça c’est un repertoire TEST, et j’ai déplacé mes_fonctions.php dans un sous répertoire de TEST. Dans mes_fonctions.php il y a notamment une fonction de connection à la DB.
Ce que je ne comprend pas, c’est pourquoi :

  • un bête .php contenant par exemple : <?php phpinfo(); ?> me renverrai ces messages d’erreur, puisque ce fichier n’a en théorie pas besoin de mes_fonctions.php (mis en caché) pour fonctionner.
  • j’ai include_path avec cette valeur alors que je n’ai aucun des répertoires cités, juste un repertoire /usr/share/php5 contenant un php.ini.dist.
  • j’ai en plus suprimer dans tous les fichiers .php du site les références à :
    home/ftp-www-users/TEST/mes_fonctions.php, en les remplaçant par une référence valide home/ftp-www-users/TEST/docroot/mes_fonctions.php (car j’ai copié le fichier initial dans docroot avant de le rendre invisible <.mes_fonctions.php>. Je ne vois donc pas Où il va me pêcher cette référence …

Bref, je suis largué, et à cours d’idées … pouvez m’aider siouplait ?

tu as vérifié si apache était bien lancé et si tu avais bien installé php??

bah a mon avis s’il te sort “unknown” (“inconnu”) c’est tout simplement que t’essayes d’ouvrir un fichier en passant en paramètre un chaine vide … enfin vu comme ca j’aurais tendance a penser que c’est ca.
En tout cas si tu l’as pas encore vérifié c’est le moment (tu te prends pas la tete et tu commentes la ligne d’ouverture de ton fichier en le remplacant par un echo du nom et tu verras bien) …
Bon alors apres si t’as deja testé ca (ce qui reste fort probable), j’ai pas d’idée la tout de suite mais je vais regarder =).

Merci Ashgenesis, mais oui, tout est bon de ce côté, je rappelle que si je replace le repertoire TEST, avec les fichiers qui vont, à leur place initiale, tout fonctionne correctement …
J’ai suivi 2 tutos pour commencer en php :
pbnaigeon.developpez.com/tutorie … dynamique/
Celui ci marche impeccable.
phpdebutant.org/article55.php
celui là pas toujours, (j’ai fait les 24 exercices en + ou - les même résultats) mais dans l’ensemble ça marche et j’ai donc appris plein de chose.

Donc, une fois cette première initiation faite, je voulais virer ce repertoire TEST, du moins de plus l’utiliser, et commencer à travailler sur un repertoire DOCROOT par exemple, qui va gérer, avec ses fichiers php, le site.
Ben là, plus rien ne marche, il y a toujours cette référence à l’ancien répertoire TEST que je ne peux modifier vu que je sais pas où elle est.
INFOS supplémentaires :

  • j’ai eu un probleme /var/cache, plus de place pour mysql, j’ai donc fait un grand ménage pas forcément subtil, pourtant que les .gz et ancien .log
  • j’ai modifier httpd.conf en chargeant quasiment tout les modules, et donc je me demande si il n’y a pas un module qui plante, l’ordre aussi de chargement des modules est peut-être pas idéal.

hello,

Tu aurais pas ce bug par hasard 209.85.129.104/search?q=cache:wy … =clnk&cd=1

Oui ça à l’air d’être ça, mais à quel moment je passe ce paramètre, je n’arrive pas à le determiner… je prend un fichier en exemple .

  • acces au site : domaine.com
  • j’entre dans le repertoire TEST (qui avant était dans un sous repertoire)
  • je tente d’ouvrir un fichier php dont voici le contenu :

Et bien j’ai les messages d’erreur cités au premier post.

Je relis le tuto de developpez.com, et je vois pas Où j’ai bien pu modifier l’environnement PHP du site, pour que dés qu’on tente d’ouvrir un .php, il recherche l’id de la page dans la db mysql …
A mon avis, c’est un truc d’environnement ou de session (j’ai bidouillé avec des session_start() dans le deuxième tuto).

En tout cas merci :confused:

merci stonfi, mais je pense pas …
j’ai fait le test, l’ouverture de la page test.shtml me donne une page blanche.

Ce qu’il faut que je comprenne, c’est pourquoi , pour tout .php, il essaye d’ouvrir [quote]Failed opening ‘/home/ftp-www-users/TEST/mes_fonctions.php’[/quote]
Car, si je move “mes_fonctions.php” en “.mes_fonctions.php”, ce que j’ai fait, plus rien ne marche. La je viens de le remettre, tout mes .php sont valable maintenant.
Parce que, j’aimerai bien me libérer de ce foutu répertoire TEST, ou simplement le renommer en DOCROOT (en limiter l’accés). pour y mettre les php et autres de l’administration du site. C’est quand même dingue de pas voir Où il faut modifier la valeur pour que php ou apache arrête de chercher ce repertoire qui ne doit plus exister.

hello,

Fait voir ton bout de code, puis un “ls -alh /home/ftp-www-users/TEST/”

voilà le ls :

$ ls -alh /home/ftp-www-users/TEST/ total 136K drwxr-sr-x 4 jcode ftpgroup 4,0K 2006-10-12 14:34 . drwxr-sr-x 8 jcode ftpgroup 4,0K 2006-10-11 16:20 .. -rw-r--r-- 1 jcode ftpgroup 56 2006-10-07 18:06 accueil.php -rw-r--r-- 1 jcode ftpgroup 589 2006-10-07 17:01 add.html -rw-r--r-- 1 jcode ftpgroup 1,9K 2006-10-11 12:56 add-link.php -rw-r--r-- 1 jcode ftpgroup 1,3K 2006-10-07 14:52 add.php -rw-r--r-- 1 jcode ftpgroup 647 2006-10-11 12:57 affichage_livres.php -rw-rw-rw- 1 jcode ftpgroup 6 2006-10-05 09:54 data.txt drwxrwx--- 4 jcode ftpgroup 4,0K 2006-10-11 13:06 docroot -rw-r--r-- 1 jcode ftpgroup 448 2006-10-04 16:37 exo1.php -rw-r--r-- 1 jcode ftpgroup 1,4K 2006-10-11 12:58 exo2.php -rw-r--r-- 1 jcode ftpgroup 2,9K 2006-10-05 11:14 exo2.php~ -rw-r--r-- 1 root ftpgroup 1,1K 2006-10-04 13:38 exo_connect.php -rw-r--r-- 1 jcode ftpgroup 1,4K 2006-10-11 13:00 famille.php drwxr-sr-x 2 root ftpgroup 4,0K 2006-10-04 14:55 Images -rw-r--r-- 1 jcode ftpgroup 966 2006-10-07 18:15 index1.php -rw-r--r-- 1 root ftpgroup 2,2K 2006-10-11 16:29 .index.php -rw-r--r-- 1 jcode ftpgroup 595 2006-10-07 21:33 login1.html -rw-r--r-- 1 root ftpgroup 382 2006-10-03 13:36 .login.htm -rw-r--r-- 1 jcode ftpgroup 1,2K 2006-10-04 16:58 .login.php -rw-r--r-- 1 jcode ftpgroup 1,3K 2006-10-04 13:57 login.php~ -rw-r--r-- 1 jcode ftpgroup 327 2006-10-07 17:49 menu.html -rw-r--r-- 1 root ftpgroup 3,9K 2006-10-11 13:37 mes_fonctions.php -rw-r--r-- 1 jcode ftpgroup 251 2006-10-07 18:06 news.php -rw-r--r-- 1 root ftpgroup 33 2006-10-02 22:10 pied_page.html -rw-r--r-- 1 jcode ftpgroup 1,5K 2006-10-06 15:42 selection_livres.php -rw-r--r-- 1 root ftpgroup 1,9K 2006-10-02 22:19 styles.css -rw-r--r-- 1 root ftpgroup 27 2006-10-12 14:12 t1.html -rw-r--r-- 1 root ftpgroup 36 2006-10-12 14:12 t1.php -rw-r--r-- 1 root ftpgroup 137 2006-10-12 14:12 test.shtml -rw-r--r-- 1 jcode ftpgroup 1,6K 2006-10-11 13:42 verifLogin.php -rw-r--r-- 1 jcode ftpgroup 1,8K 2006-10-06 15:27 verif.php -rw-r--r-- 1 jcode ftpgroup 1,2K 2006-10-05 09:37 verif.php~

NB: les fichiers finissant par le caractère ~ n’ont pas d’existence véritable, enfin, ils sont générés par jEdit, c’est des sauvegardes, sa tembouille à lui.
Ici, j’ai remis le fichier mes_fonctions.php, tout fonctionne sans probleme comme ça.
Tous ces fichiers .php ne sont que des exercices que j’ai fait.
le fichier index1.php n’a aucune importance.
J’ai caché le fichier index.php en quelquesorte pour ne pas atterir dans la gestion php du site, avec interrogation de la db mysql (tuto de developpez.com), ce qui me permet de naviguer dans ./TEST/, de faire mes pti exos d’apprentissage. J’utilise donc, pour chaque exo que je fais, quand c’est nécessaire (connection à une database), le fichier mes_fonctions.php. Si, je déplace ce fichier dans un autre repertoire, plus rien ne fonctionne ! alors que je mets bien, dans le fichier exo.html :

[code]

Login :
Password
[/code]et donc dans le fichier login.php, un require ou un include vers /nouvelEmplacement/mes_fonctions.php. Pourquoi est-ce qu'il continu de chercher mes_fonctions.php à l'ancien emplacement ? Pourquoi est-ce qu'il continue d'avoir besoin de ce fichier même si il n'est pas appelé par un bout de code du fichier que j'ouvre avec le navigateur ? (oui, si mon fichier exo.html je le nomme exo.php et que j'y mets "toto blahblahblah", mes_fonctions.php n'est pas requis pour lire ce fichier ! Pourquoi il cherche les fonctions ?).

ps: stonfi, tu parlais de quel bout de code sinon, que tu voudrais voir ?
le code de “mes_fonctions.php” , c’est le fichier tel quel fourni par le tuto.

t’as essayé de faire une recherche sur “mes_fonctions” dans ton fichier de conf php si t’es en local ?
Sinon en règle générale le problème “je comprends pas j’ai changé le code et pourtant ca me fait toujours la meme chose” est parfois du au fait qu’on regarde pas au bon endroit (je suppose que t’as deja vérifié mais bon ca fait jamais de mal de re-regarder :p). Donc vérifie quand meme que t’es pas en local ou en tout cas que t’es bien dans le bon rep et que t’as pas fait genre un méchant copy/paste pour un formulaire que t’aurais oublié de remanier apres coup …
Perso quand j’ai le meme genre de pbs que ce que tu dis c’est a cause de ces trucs la justement parceque j’oublie de refaire correctement mes liens dans mes formulaires alors que je suis dans un répertoire de test et pas sur le “bon”. ^^

[quote=“usinagaz”]
NB: les fichiers finissant par le caractère ~ n’ont pas d’existence véritable, enfin, ils sont générés par jEdit, c’est des sauvegardes, sa tembouille à lui.
Ici, j’ai remis le fichier mes_fonctions.php, tout fonctionne sans probleme comme ça.[/quote]

Juste une remarque (je n’ai pas lu tout le message), méfies toi de ces fichiers ~, un gag très classique consiste sur un serveur à essayer de lire les fichiers toto.php~ lorsqu’on a eu accès à une page toto.php. php~ n’étant pas connu d’apache comme une extension, il balance le fichier tel que ce qui permet à qui veut d’avoir le source php donc les mots de passes des bases MySQL parfois sinon beaucoup de renseignements qu’on souhaiterait gardés. Une bonne habitude est donc de ne jamais éditer un site sur place mais de travailler sur une copie et de synchroniser avec rsync par exemple.
Je :arrow_right:

[quote=“Hoshin”]t’as essayé de faire une recherche sur “mes_fonctions” dans ton fichier de conf php si t’es en local ?[/quote] :blush:
MERKI !! :stuck_out_tongue:
Effectivement :

debian:/home/jcode# cat /etc/php5/apache/php.ini |grep mes_fonctions auto_prepend_file = /home/ftp-www-users/TEST/mes_fonctions.php
pfffffff … :blush: j’avais bidouillé ça …
reste plus qu’à modifier cette valeur, pour éviter de toujours appeler un require() , un incule(), ou un require_once.
Question : Comment vous utilisez la directive include_path dans php.ini ?
Est ce que par exemple, je peux placer tous les .php dans un des repertoires qui y est mentionné ? mon docroot, je peux le mettre par exemple dans /usr/share/php ?

Résolu : ces messages d’erreur arrivent bien quand une référence à un fichier déplacé ou non-existant est faite dans le fichier de conf de php.
Si c’était une référence non valable (lors d’un include) dans un .php que l’on visite, à un fichier de fonction qui à été déplacé, on aurait plutôt ce type de message d’erreur :

[quote]Warning: [b]include_once/b [function.include-once]: failed to open stream: No such file or directory in /pathvers/fichiervisité.php on line 6[/quote]nuance !

Encore merci Hoshin, j’étais trop perdu là … 8), j’ai cherché partout les références à mes_fonctions.php, sauf dans php.ini :open_mouth: :smiley:

[quote=“fran.b”]Je :arrow_right:[/quote]non non :smiley: veux-tu bien rester ici !!! :smiley:
Merci de souligner cela, je vais vite rectifier. Mais c’est quoi rsync, c’est pas la première fois qu’on m’en parle ? vais me renseigner. Tu peux m’aider aussi stu veux :confused:
J’ai normalement pris soin de fermer le site au net, j’y accède en local pour travailler… mais ta remarque est trés importante, bien sur.

EDIT: Bon ben c’était pas sorcier apparemment : http://forum.debian-fr.org/viewtopic.php?t=5036
C’est bien rsync, on peut envisager de faire une sauvegarde de tout le système en un click même :stuck_out_tongue: