2016-05-13 5 views
3

Dies mag wie ein Duplikat erscheinen, aber ich habe die ähnlichen Fragen gelesen und versucht, was sie vorgeschlagen, und es hat nicht funktioniert.CakePHP Berechtigungen Fehler

Als ich meine CakePHP Website navigieren erhalte ich die folgenden Fehler

Warnung (2): mkdir(): Zugriff verweigert [CORE/src/Cache/Motor/FileEngine.php, Linie 417]

Warnung: file_put_contents (/var/www/html/my-application/logs/error.log) [function.file-put-contents]: failed to open stream: Zugriff verweigert in /var/www /html/my-application/vendor/cakephp/cakephp/src/Log/Engine/FileLog.php on line 134

Warnung (512):/var/www/html/my-application/tmp/cache/persistent/nicht beschreibbaren [CORE/src/Cache/Motor/FileEngine.php, Linie 425]

Warnung (2): file_put_contents (/var/www/html/my-application/logs/error.log) [function.file-put-contents]: Stream konnte nicht geöffnet werden: Berechtigung verweigert [CORE/src/Log /Engine/FileLog.php, Leitung 134]

Warning: file_put_contents (/var/www/html/my-application/logs/error.log) [function.file-put-contents]: failed to open stream : Berechtigung verweigert in /var/www/html/my-application/vendor/cakephp/cakephp/src/Log/Engine/FileLog.php on line 134

Die Sache ist, ich bin sicher, dass PHP Zugriff auf alle hat notwendige Dateien.

PHP läuft als Benutzer Apache, in Gruppe Apache. Beweis:

[[email protected] my-application]$ ps -efl | grep apache 
5 S apache 21863 21861 0 80 0 - 124037 SYSC_s 03:06 ?  00:00:00 /usr/sbin/httpd -DFOREGROUND 
5 S apache 21864 21861 0 80 0 - 123971 SYSC_s 03:06 ?  00:00:00 /usr/sbin/httpd -DFOREGROUND 
5 S apache 21865 21861 0 80 0 - 123485 SYSC_s 03:06 ?  00:00:00 /usr/sbin/httpd -DFOREGROUND 
5 S apache 21867 21861 0 80 0 - 124037 SYSC_s 03:06 ?  00:00:00 /usr/sbin/httpd -DFOREGROUND 
5 S apache 21868 21861 0 80 0 - 123485 SYSC_s 03:06 ?  00:00:00 /usr/sbin/httpd -DFOREGROUND 
5 S apache 21869 21861 0 80 0 - 123485 SYSC_s 03:06 ?  00:00:00 /usr/sbin/httpd -DFOREGROUND 
5 S apache 21870 21861 0 80 0 - 124037 SYSC_s 03:06 ?  00:00:00 /usr/sbin/httpd -DFOREGROUND 
5 S apache 21881 21861 0 80 0 - 123485 SYSC_s 03:09 ?  00:00:00 /usr/sbin/httpd -DFOREGROUND 
5 S apache 21882 21861 0 80 0 - 123485 SYSC_s 03:09 ?  00:00:00 /usr/sbin/httpd -DFOREGROUND 
5 S apache 21883 21861 0 80 0 - 125444 ep_pol 03:09 ?  00:00:00 /usr/sbin/httpd -DFOREGROUND 
0 S ec2-user 21934 21785 0 80 0 - 28161 pipe_w 03:20 pts/0 00:00:00 grep --color=auto apache 

Relevante Verzeichnisse sind im Besitz von Apache: Apache und haben Berechtigungen auf 777 trotzdem:

[[email protected] my-application]$ ls -l 
total 132 
drwxrwxr-x. 2 apache apache 47 May 12 21:16 bin 
-rw-rw-r--. 1 apache apache 1128 May 12 21:16 composer.json 
-rw-rw-r--. 1 apache apache 93002 May 12 21:16 composer.lock 
drwxrwxr-x. 3 apache apache 4096 May 12 21:19 config 
-rw-rw-r--. 1 apache apache 648 May 12 21:16 index.php 
drwxrwxrwx. 2 apache apache 34 May 13 03:10 logs 
-rw-rw-r--. 1 apache apache 1139 May 12 21:16 phpunit.xml.dist 
drwxrwxr-x. 2 apache apache 18 May 12 21:16 plugins 
-rw-rw-r--. 1 apache apache 980 May 12 21:16 README.md 
drwxrwxr-x. 9 apache apache 4096 May 12 21:16 src 
drwxrwxrwx. 4 apache apache 55 May 12 21:16 tests 
drwxrwxrwx. 2 apache apache  6 May 13 03:17 tmp 
drwxrwxr-x. 28 apache apache 4096 May 12 21:16 vendor 
drwxrwxr-x. 9 apache apache 4096 May 12 21:16 webroot 

Unterverzeichnisse in tmp/richtigen Berechtigungen zu:

[[email protected] tmp]$ ls -l 
total 0 
drwxrwxrwx. 5 apache apache 48 May 12 21:16 cache 
drwxrwxrwx. 2 apache apache 18 May 12 21:16 sessions 
drwxrwxrwx. 2 apache apache 18 May 12 21:16 tests 

Ich habe auch versucht, die Genehmigungen wieder anzuwenden, nur für den Fall,

sudo chown -R apache:apache /var/www/html/my-application 
sudo chmod -R 777 /var/www/html/my-application/tmp 
sudo chmod -R 777 /var/www/html/my-application/logs 
sudo chmod -R 777 /var/www/html/my-application/tests 
zu verwenden

Und ich habe auch in als Apache und bearbeiten die Dateien selbst, ohne Probleme

sudo su -s /bin/bash apache 
vi /var/www/html/my-applciation/logs/error.log 

Ich bin wirklich zu arbeiten, zu kämpfen angemeldet, was das Problem jetzt sein könnte.

Wir haben SELinux installiert/aktiviert, vielleicht verursacht das also Probleme?

Hilfe wäre sehr willkommen.

Danke,

YM

+0

Haben Sie die Berechtigung rekursiv angewendet? Nicht einmal Cache muss beschreibbar sein, aber auch Unterverzeichnisse – arilia

+0

@arilia yep, sie sind rekursiv gemacht –

+1

Haben Sie die Checkliste für die Fehlersuche hier http://stackoverflow.com/questions/36577020/failed-to-open-stream-no gefolgt -seine-Datei-oder-Verzeichnis? Es bietet Elemente im Falle von SELinux. Es könnte durchaus der Grund sein –

Antwort

1

Die Frage war SELinux Es war mit folgenden Befehlen aufgelöst:

chcon -R system_u:object_r:var_lib_t:s0 tmp 
chcon -R system_u:object_r:var_lib_t:s0 logs 
chcon system_u:object_r:httpd_var_lib_t:s0 logs/* 
chcon system_u:object_r:httpd_var_lib_t:s0 tmp/debug_kit.sqlite 
chcon system_u:object_r:var_lib_t:s0 tests 

chmod -R o-w tmp logs tests 
+1

Diesen Ansatz auf CentOS FWIW ... – TekiusFanatikus

0

Alle Menschen wissen, stellen die Erlaubnis 777 keine gute Praxis ist. Ich fand diese nützlichen Tipp in CakePHP installation doc, hoffen, dass dies helfen (;

setfacl -R -m u:apache:rwx app/tmp 
setfacl -R -d -m u:apache:rwx app/tmp 
2

die Sie interessieren.

chown -R apache.apache /path/to/html/ 

chmod -R 777 /path/to/html/ 

Dann httpd-Dienst neu starten:

service httpd restart