70 votes

Avertissement PHP : Unknown : failed to open stream

J'ai modifié le fichier apache httpd.conf récemment pour que le mod_rewrite fonctionne. Je ne sais pas si ce problème vient de là ou non, mais j'ai ce problème depuis ce jour.
Voici ce que je vois sur le front-end lorsque j'exécute le logiciel.

Erreur de serveur Le site web a rencontré une erreur lors de la récupération http://localhost/prestashop/ . Il peut être en panne pour maintenance ou configuré incorrectement.

Il n'y a pas de fichier spécifique qui déclenche cela. Mais j'ai vu que généralement les petits programmes qui se composent de 4-5 fichiers php, fonctionne bien, mais les logiciels avec beaucoup de fichiers (comme PrestaShop) ne le font pas.
J'ai vérifié les journaux et voici ce que j'ai trouvé.

[Wed Mar 16 19:33:39 2011] [error] [client ::1] PHP Warning:  Unknown: failed to open stream: Permission denied in Unknown on line 0
[Wed Mar 16 19:33:39 2011] [error] [client ::1] PHP Fatal error:  Unknown: Failed opening required '/var/www/html/yomig/index.php' (include_path='.:/usr/share/pear:/usr/share/php') in Unknown on line 0
[Wed Mar 16 19:33:39 2011] [error] [client ::1] File does not exist: /var/www/html/favicon.ico
[Wed Mar 16 19:33:41 2011] [error] [client ::1] PHP Warning:  Unknown: failed to open stream: Permission denied in Unknown on line 0
[Wed Mar 16 19:33:41 2011] [error] [client ::1] PHP Fatal error:  Unknown: Failed opening required '/var/www/html/yomig/index.php' (include_path='.:/usr/share/pear:/usr/share/php') in Unknown on line 0

0 votes

Est-ce que votre site web est Root : /var/www/html/yomig/ ou /var/www/html/ ? Il semble que vous ayez cassé le webroot avec vos changements de configuration. Quels includes spécifiez-vous dans index.php ? Utilisent-ils un chemin relatif ou un chemin absolu ?

0 votes

Mon site web Root est /var/www/html/yomig .. Et aucun fichier n'est inclus dans index.php.

0 votes

@AbiusX un peu plus d'explications s'il vous plaît.

151voto

John Magnolia Points 3304

J'ai rencontré la même erreur, pour moi cela a été causé par le fait que sur mon Mac j'ai changé le DocumentRoot pour le répertoire Sites de mes utilisateurs.

Pour le corriger, j'ai lancé la commande récursive pour m'assurer que le service Apache a des droits de lecture.

sudo chmod -R 755 ~/Sites

0 votes

@John +1 pour votre réponse car cela a fonctionné pour moi aussi... Cependant, je suis un peu confus quant à la raison pour laquelle il devrait être 755... Mon hôte (serveur live) fonctionne bien avec 644 et j'ai toujours pensé que l'ajout de l'utilisateur OS au dossier web était la bonne façon de procéder.

0 votes

C'est dû à la façon dont le propriétaire/groupe est configuré pour ce répertoire.

0 votes

J'ai commencé une liste de contrôle de dépannage pour cette erreur fréquente ici : stackoverflow.com/a/36577021/2873507

32voto

jamie Points 64

Si vous utilisez Fedora, assurez-vous que SELinux n'interfère pas avec vous, en utilisant cette commande :

    sudo /sbin/restorecon -R /var/www/. 

Plus d'informations ici : linuxquestions.org/questions/linux-server-73/

1 votes

Ce commentaire n'est pas très utile. Corrigez comme sudo /sbin/restorecon -R /var/www/ . Plus d'informations ici : linuxquestions.org/questions/linux-server-73/

10voto

Mullins Points 901

J'ai eu la même erreur et mon problème était que les autorisations de fichiers étaient incorrectes.

chmod 755 index.php

a fonctionné pour moi.

0 votes

J'ai commencé une liste de contrôle de dépannage pour cette erreur fréquente ici : stackoverflow.com/a/36577021/2873507

4voto

Narek Points 2281

J'ai eu ce problème lorsque j'ai inséré une mauvaise adresse de fichier dans le fichier .htaccess

php_value auto_prepend_file "/home/user/wrong/address/config.php"

Donc, si vous utilisez auto_prepend_file Vérifiez le chemin de votre fichier. Il est appelé depuis .htaccess afin que PHP ne puisse pas déterminer le fichier et la ligne d'erreur.

2voto

petka Points 19

Cela m'est arrivé aujourd'hui avec /home/user/public_html/index.php et la solution était de faire chmod o+x /home/user car ce répertoire doit avoir le X, sinon le serveur apache ne peut pas lister les fichiers (i.e. faire ls )

1 votes

x fournit une autorisation de traversée. r fournit la permission de lire (mais pas sans x )

0 votes

J'ai commencé une liste de contrôle de dépannage pour cette erreur fréquente ici : stackoverflow.com/a/36577021/2873507

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X