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

69

Ich habe kürzlich die Apache-Datei httpd.conf bearbeitet, damit mod_rewrite funktioniert. Ich weiß nicht, ob dieses Problem darauf zurückzuführen ist oder nicht, aber ich bekomme dieses Problem von diesem Tag an.
Das sehe ich im Frontend, wenn ich die Software starte -

Serverfehler Die Website hat beim Abrufen von http: // localhost / prestashop / einen Fehler festgestellt . Möglicherweise ist es wegen Wartungsarbeiten nicht verfügbar oder falsch konfiguriert.

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, Software mit vielen Dateien (wie PrestaShop) jedoch nicht.
Ich habe die Protokolle überprü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
Bibhas Debnath
quelle
Ist Ihre Website root: / var / www / html / yomig / oder / var / www / html /? Es sieht so aus, als hätten Sie die Webroot mit Ihren Konfigurationsänderungen beschädigt. Was beinhaltet Sie in index.php? Verwenden sie einen relativen oder einen absoluten Pfad?
Canuteson
Mein Website-Stamm ist /var/www/html/yomig.. Und keine Datei ist in index.php enthalten.
Bibhas Debnath
@AbiusX ein bisschen mehr Erklärung bitte.
Bibhas Debnath
1
Ich denke, er schlägt vor, dass der Webserver möglicherweise keinen Lesezugriff auf die Datei "index.php" hat.
Jeff Parker
Hey, der Ordner ist chmod 755 -R, aber immer noch kein Glück. : - /
Bibhas Debnath

Antworten:

142

Der gleiche Fehler ist bei mir aufgetreten, weil ich auf meinem Mac den DocumentRoot in das Site-Verzeichnis meiner Benutzer geändert habe.

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

sudo chmod -R 755 ~/Sites
John Magnolia
quelle
@ John +1 für Ihre Antwort, da es auch bei mir funktioniert hat ... Ich bin jedoch etwas verwirrt darüber, warum dies 755 sein sollte ... Mein Host (Live-Server) funktioniert gut mit 644 und das habe ich mir immer gedacht Das Hinzufügen des Betriebssystembenutzers zum Webordner war der richtige Weg.
Itsols
Es liegt an der Art und Weise, wie der Eigentümer / die Gruppe für dieses Verzeichnis eingerichtet ist
John Magnolia
Ich habe eine Checkliste zur Fehlerbehebung für diesen häufigen Fehler hier gestartet: stackoverflow.com/a/36577021/2873507
Vic Seedoubleyew
755ist völlig übertrieben und wohl unsicher: Sie möchten nicht, dass jedes Verzeichnis weltweit lesbar ist, und es ist übertrieben, jeder Datei Ausführungsberechtigungen zu erteilen. In Bezug auf Ihre genaue Fehlermeldung haben Sie nur benötigt chmod 644 /var/www/html/yomig/index.php. Siehe Antwort von @Dexter für richtige / sichere rekursive Befehle: stackoverflow.com/a/26918548
user664833
9

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

chmod 755 index.php

arbeitete für mich.

Mullins
quelle
Ich habe eine Checkliste zur Fehlerbehebung für diesen häufigen Fehler hier gestartet: stackoverflow.com/a/36577021/2873507
Vic Seedoubleyew
5

Hier einige Anleitungen zur Behebung. Gehe zu :

cd /var/www

sudo chown www-data:www-data * -R

sudo usermod -a -G www-data username

Ändern Sie das Benutzername mit Ihrem Benutzernamen. Ich hoffe es hilft.


quelle
4

Ich habe dieses Problem beim Einfügen einer falschen Dateiadresse .htaccess

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 .htaccessPHP aufgerufen, sodass Fehlerdatei und Zeile nicht ermittelt werden können.

Narek
quelle
4

In meinen Augen ist der wahre 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 {} \;
Dexter
quelle
sollte der Benutzer www-datanicht auch einige Rechte erhalten? Ich würde chmod g+r /path/ -R&&chown $USER:www-data /path/ -R
rubo77
@Dexter: +X(Großbuchstaben X) ist eine bessere Möglichkeit, nur Verzeichnisse zu beeinflussen. Es ist jedoch möglicherweise nicht in allen Geschmacksrichtungen erhältlich chmod. So sudo chmod +rX /path/to/DocumentRoot/ -Rkönnte im Wesentlichen tun, abhängig von Ihrem chmod.
0xC0000022L
Ich habe eine Checkliste zur Fehlerbehebung für diesen häufigen Fehler hier gestartet: stackoverflow.com/a/36577021/2873507
Vic Seedoubleyew
4

Es handelt sich um ein SELinux-Blockierungsproblem. Linux hat den httpd-Zugriff verhindert. 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'
Carlwang
quelle
3

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

Adrian Gunawan
quelle
2

Es ist mir heute mit /home/user/public_html/index.php passiert und die Lösung bestand darin, chmod o+x /home/userdieses Verzeichnis mit dem X zu versehen, da der Apache-Server sonst keine Dateien auflisten kann (dh tun ls)

Petka
quelle
1
xbietet Durchquerungsberechtigung. rbietet x
Leseerlaubnis
Ich habe eine Checkliste zur Fehlerbehebung für diesen häufigen Fehler hier gestartet: stackoverflow.com/a/36577021/2873507
Vic Seedoubleyew
1

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

Einfach
quelle
Ich habe eine Checkliste zur Fehlerbehebung für diesen häufigen Fehler hier gestartet: stackoverflow.com/a/36577021/2873507
Vic Seedoubleyew
1

Zitieren Sie einfach die obige Antwort von user1992554. Diese hat in Linux Mint perfekt für mich funktioniert, um die Warnung loszuwerden. Warnung: Stream konnte nicht geöffnet werden: Berechtigung verweigert

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

die Lichter
quelle
1

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

setsebool -P httpd_read_user_content 1

Kirenpillay
quelle
1

In meinem Fall _wwwfehlte die von Apache verwendete Gruppe in der Zugriffsliste des Ordners, daher musste ich zuerst die fehlende Gruppe wie folgt hinzufügen:

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

Wechseln Sie _wwwzu dem Benutzer oder der Gruppe, unter der Apache ausgeführt wird.

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

Die Ausgabe ist riesig, aber sehen Sie sich am Ende so etwas an wie:

User: name="_www"
Group: name="_www"
AamirR
quelle
0

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 Datei, die ich hochgeladen habe, hatte keine Ausführungsberechtigungen (alle Dateien hatten die Rechte "600"). In diesen Beiträgen wird genau erklärt, was Sie tun müssen, um Ihr VSFTPD so zu konfigurieren, dass Standardrechte für Ihre Dateien festgelegt werden:

Duco
quelle
0

Einmal passiert mir das auch. und als ich die Angelegenheit gegoogelt habe, habe ich erfahren, dass dies passiert, wenn die Berechtigungen für die Datei fälschlicherweise auf 000 gesetzt sind (was bedeutet, dass niemand diese Datei lesen, schreiben oder ausführen kann). Dann habe ich einfach meine Dateiberechtigungsberechtigung in Lesen & Schreiben 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 jeweilige Datei und klicken Sie auf Informationen aus dem Dropdown-Menü abrufen. Rufen Sie das Freigabe- und Berechtigungsfenster auf und ändern Sie die Berechtigungseinstellungen in Lesen und Schreiben

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

Heshantha Nadeeshan Jayawardan
quelle
Ich habe eine Checkliste zur Fehlerbehebung für diesen häufigen Fehler hier gestartet: stackoverflow.com/a/36577021/2873507
Vic Seedoubleyew
0

Überprüfen Sie das DOS- und Unix-Dateiformat. Dieses Problem tritt auf Linux-Plattformen auf, wenn das dos-Dateiformat verwendet wird. Verwenden Sie den Befehl doc2unix wie unten beschrieben und wiederholen Sie den Vorgang, damit dos2unix * .php funktioniert

Diese Lösung für das folgende 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
Shadaksharayya HA
quelle
0

Gehen Sie zum Ordner htdocs

cd htdocs

Ausführen

chmod -R 755 Stellen

Kein Sudo nötig!

denis
quelle
0

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

 php_admin_value open_basedir <YOUR ROOT>
Pavel Jiri Strnad
quelle