web-dev-qa-db-de.com

PHP Warnung: Unbekannt: Stream konnte nicht geöffnet werden

Ich habe die Apache-Datei httpd.conf kürzlich bearbeitet, damit mod_rewrite funktioniert. Ich weiß nicht, ob dieses Problem hiervon herrührt oder nicht, aber ich bekomme dieses Problem von diesem Tag an.
Das sehe ich am Frontend, wenn ich die Software starte - 

Serverfehler Die Website ist auf .__ gestoßen. ein Fehler beim Abrufen von http: // localhost/prestashop/ . Es kann zur Wartung heruntergefahren oder konfiguriert sein falsch.

Es gibt keine bestimmte Datei, die dies auslöst. Aber ich habe gesehen, dass normalerweise kleine Programme, die aus 4-5 PHP-Dateien bestehen, gut laufen, aber Software mit vielen Dateien (wie PrestaShop) nicht.
Ich habe die Protokolle geprüft und das habe ich gefunden.

[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
61
Bibhas Debnath

Der gleiche Fehler ist aufgetreten. Für mich wurde der Fehler verursacht, weil ich auf meinem Mac das DocumentRoot-Verzeichnis in das Verzeichnis der Benutzer meiner Benutzer geändert habe.

Um das Problem zu beheben, habe ich den rekursiven Befehl ausgeführt, um sicherzustellen, dass der Apache-Dienst über Leseberechtigungen verfügt.

Sudo chmod -R 755 ~/Sites
126
John Magnolia

Wenn Sie Fedora ausführen, stellen Sie sicher, dass SELinux nicht stört. Sie können dies mit diesem Befehl beheben: 

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

Mehr Infos hier: linuxquestions.org/questions/linux-server-73/

30
jamie

Ich hatte den gleichen Fehler und mein Problem war, dass die Dateiberechtigungen falsch waren.

chmod 755 index.php

arbeitete für mich.

9
Mullins

In meinen Augen ist wahrer Weg:

# add READ permission to all directories and files under your DocumentRoot
Sudo chmod +r /path/to/DocumentRoot/ -R

# add EXECUTE permission to all DIRECTORIES under your DocumentRoot
find /path/to/DocumentRoot/ -type d -exec chmod +x {} \;
4
Dexter

Ich habe dieses Problem erhalten, wenn Sie eine falsche Dateiadresse in .htaccess einfügen.

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

Wenn Sie also auto_prepend_file verwenden, überprüfen Sie Ihren Dateipfad. Es wurde von .htaccess aufgerufen, sodass PHP Fehlerdatei und -zeile nicht ermitteln kann.

4
Narek

Hier einige Anleitungen, wie Sie das Problem beheben können. Gehe zu :

cd /var/www

Sudo chown www-data:www-data * -R

Sudo usermod -a -G www-data username

Ändern Sie userneme mit Ihrem Benutzernamen. Ich hoffe es hilft.

3
user1992554

Es passierte mir heute mit /home/user/public_html/index.php und die Lösung bestand darin, chmod o+x /home/user zu tun, da dieses Verzeichnis das X enthalten muss, da der Apache-Server sonst keine Dateien auflisten kann (d. H. ls)

2
petka

Es ist ein SELinux-Blockierungsproblem. Linux verhindert den Zugriff auf httpd. Hier ist die Lösung:

# restorecon '/var/www/html/wiki/index.php'
# restorecon -R '/var/www/html/wiki/index.php'
# /sbin/restorecon '/var/www/html/wiki/index.php'
2
carlwang

In meinem Fall fehlte die Gruppe _www, die Apache verwendet, in der Zugriffsliste des Ordners. Daher musste ich zuerst die fehlende Gruppe hinzufügen:

Sudo chown -R _www ~/path-to-folder

Ändern Sie _www in den Benutzer oder die Gruppe, unter der Apache ausgeführt wird.

Finden Sie den Benutzer/die Gruppe von Apache mit apachectl -S heraus.

Die Ausgabe ist riesig, aber am Ende sieht es so aus:

User: name="_www"
Group: name="_www"
1
AamirR

Ich bin gerade auf dieses Problem gestoßen und in meinem Fall wurde es von Selinux verursacht. Durch Deaktivieren wurde das Problem behoben. Und nein, ich brauche Selinux auf meiner Workstation nicht, danke.

1
Adrian Gunawan

Zitieren Sie einfach für die obige Antwort von user1992554 Diese funktionierte perfekt für mich in Linux Mint, um Warning loszuwerden

cd/var/www 
Sudo chown www-data: www-data * -R 
Sudo usermod -a -G www-data Benutzername

1
thelightings

In Fedora 25 stellte sich heraus, dass es sich um ein SE-Linux-Problem handelte, und die Benachrichtigung ergab diese Lösung, die für mich funktionierte.

setsebool -P httpd_read_user_content 1

1
kirenpillay

Dies ist keine direkte Antwort auf die Frage, aber ich hatte das gleiche Problem. Ich habe VSFTPD auf meinem Ubuntu Server VPS installiert. Ich konnte Dateien hochladen, aber jede hochgeladene Datei hatte keine Ausführungsberechtigung (alle Dateien hatten die Rechte "600"). In diesen Beiträgen wird erklärt, was genau Sie tun müssen, um Ihre VSFTPD so zu konfigurieren, dass Standardrechte für Ihre Dateien festgelegt werden:

0
Duco

Dies geschieht auch (und ist besonders verwirrend), wenn Sie vergessen haben, dass Sie einen Windows-Symlink zu einem anderen Verzeichnis erstellt haben und das andere Verzeichnis nicht über die entsprechenden Berechtigungen verfügt.

0
SimplGy

Überprüfen Sie das DOS- und Unix-Dateiformat. Dieses Problem tritt auf Linux-Plattformen auf, wenn das DOS-Dateiformat verwendet wird. Verwenden Sie den doc2unix-Befehl wie folgt und versuchen Sie es erneut Dos2unix * .php

Diese Lösung für das untenstehende Problem

Wed Nov 12 07:50:19 2014] [error] [client IP1] PHP Warning: Unknown: failed to
    open stream: Permission denied in Unknown on line 0
[Wed Nov 12 07:50:19 2014] [error] [client IP1] PHP Fatal error: Unknown: Failed
    opening required '/var/www/html/index.php' (include_path='.:/usr/share/pear:
    /usr/share/php') in Unknown on line 0
0

Einmal passiert mir das auch. Und als ich die Angelegenheit gegoogelt habe, wurde mir klar, dass dies der Fall ist, wenn die Berechtigungen für die Datei fälschlicherweise auf 000 festgelegt sind (was bedeutet, dass niemand diese Datei lesen, schreiben oder ausführen kann). Dann habe ich gerade mein Dateiberechtigungsrecht in Read & Write geändert und es hat für mich funktioniert.

So ändern Sie die Dateiberechtigungseinstellungen auf dem Mac: Klicken Sie mit der rechten Maustaste auf die betreffende Datei und klicken Sie auf Informationen aus dem Dropdown-Menü. Wechseln Sie zum Bereich Freigabe und Berechtigungen, und ändern Sie die Berechtigungseinstellungen in Lesen und Schreiben

Mehr: http://www.itoctopus.com/warning-unknown-ailed-to-open-stream-permission-denied-in-unknown-on-line-freak-in-joomla

Wechseln Sie in den Ordner htdocs

cd htdocs

Execute

chmod -R 755 Websites

Keine Notwendigkeit für Sudo!

0
denis

Mit Ausnahme der Berechtigungen kann das Problem open_basedir sein. Wenn Sie es verwenden (und ich empfehle es zu verwenden), überprüfen Sie die Einstellungen im VirtualHost:

 php_admin_value open_basedir <YOUR ROOT>
0