2015-02-28 10 views
5

Ich weiß, das ein gemeinsamer Fehler mit vielen Threads, aber ich bin müde von der Suche und ich habe es immer noch nicht gelöst. Wenn ich versuche, die Funktion file_put_contents ich folgende Fehlermeldung erhalten auszuführen:fehlgeschlagen am 7. CentOS-Stream auf file_put_contents in PHP öffnen

Warning: file_put_contents(test.txt): failed to open stream: Permission denied in /var/www/html/nurses/adminWriter.php on line 29 

ich bereits die häufigste Antwort getan haben, ändern Sie die Berechtigungen der Krankenschwestern Ordner und die test.txt Datei zu 777. Das hat nicht funktioniert.

Ich bin gerade auf einer neuen Installation des neuesten CentOS 7-Servers.

Ich habe festgestellt, dass, wenn ich den PHP-Skript über die Konsole ausführen:

# php /var/www/html/nurses/adminWriter.php 

Es funktioniert ganz gut, ich den Fehler nur erhalten, wenn sie durch den Browser ausgeführt wird, aber ich es wirklich laufen muß diesen Weg.

Mit freundlichen Grüßen!

+1

Wenn Sie ein PHP-Skript über Apache laufen, läuft es als (was auch immer Benutzer Sie angeben), oft "Apache". Wenn Sie ein PHP-Skript über die Konsole ausführen, führen Sie es als das aus, was Sie als angemeldet haben. Stellen Sie sicher, dass der Benutzer "apache" (oder was auch immer) auf diese Datei zugreifen kann (einschließlich aller übergeordneten Verzeichnisse). Sie können auch versuchen, einen absoluten Pfad zu test.txt zu verwenden - Sie versuchen möglicherweise, etwas zu schreiben, das Sie nicht erwarten. – jedwards

+0

Haben Sie das Zitat nach dem Verwendungszweck übersprungen? Versuchen Sie das: 'file_put_contents (__ DIR__. '/test.txt');' – alfallouji

+0

Sie meinen, etwas wie zu tun: # chown -R apache: apache/var/www/html/Krankenschwestern/ – danielnovais92

Antwort

4

Ok, ich fand das Problem: selinux

Hier ist die Lösung: http://kb.sp.parallels.com/en/11142

Falls die Seite geht nach unten:

Symptome

Nachdem Sie das Standardverzeichnis ändern Zum Speichern von Websiteinhalten (z. B. "/ home") können Sie nicht auf den Inhalt von Subdomains und zusätzlichen Websites über das Web zugreifen.

Ursache

Dieses Problem tritt auf, wenn SELinux Werke in "Enforcement" -Modus. In diesem Modus haben Webroot-Verzeichnisse für Websites und Subdomains in ihnen unterschiedliche Berechtigungen, und Ihr Webserver kann nicht darauf zugreifen. Führen Sie diesen Befehl:

# getenforce 

Die Ausgabe sollte: Erzwingen

Auflösung

Disable SELinux Unterstützung: Öffnen Sie die Datei /etc/selinux/config in einem beliebigen Editor und finden Sie diese Zeile:

SELINUX=<value> 

Ändern Sie es an:

SELINUX=disabled 

Wenn Sie diese Datei nicht finden können, öffnen Sie die Datei/boot/grub/grub.conf in jedem den Parameter selinux = 0 zum Grub Bootloader-Editor und fügen:

title SE-Linux Test System 
root (hd0,0) 
kernel /boot/vmlinuz-2.4.20-selinux-XXXXXXXXXX ro root=/dev/hda1 nousb selinux=0 
#initrd /boot/initrd-2.4.20-selinux-XXXXXXXXXX.img 

Reboot der Server die Änderungen zu übernehmen. Wenn Sie nicht neu starten wollen, führen Sie diesen Befehl ein:

# setenforce 0 
+1

Das Deaktivieren von SELinux wird nicht empfohlen. Es gibt bessere Möglichkeiten, dies zu tun. –

+1

@Ilia Rostovtsev Ich stieß auf dasselbe Problem und deaktivierte SELinux, was andere bessere Möglichkeiten, es zu tun, ohne SELinux zu deaktivieren? – technomage

9
chcon -Rv --type=httpd_sys_rw_content_t /dir 

Dies kann helfen, anstatt die selinux auszuschalten.

+1

Können Sie bitte erklären, was das macht? – Mike

+0

danke 'aureport -a' vor dem Lauf chcon {{{ 24. 09-10-2017 16:25:31 httpd system_u: system_r: httpd_t: s0 2 Datei lesen unconfined_u: object_r: user_home_t: s0 verweigert 923 25. 09-10-2017 16:26:42 httpd system_u: system_r: httpd_t: s0 2 Datei lesen unconfined_u: object_r: user_home_t: s0 verweigert 924 26. 09-10-2017 16:29:38 httpd system_u: system_r: httpd_t: s0 2 Datei lesen unconfined_u: object_r: user_home_t: s0 verweigert 925 }}} –

+0

Dieser arbeitete für mich. Ich habe meine Zeit gespart, nachdem ich viele Stunden gearbeitet hatte. Verwenden Sie sudo chcon -Rv --type = httpd_sys_rw_content_t/dir – Vara

Verwandte Themen