2016-05-13 3 views
3

Это может показаться дубликат, но я прочитал похожие вопросы и попробовал, что они предложили, и это не сработало.Ошибка разрешения CakePHP

Когда я перейти к моей CakePHP сайта я получаю следующие ошибки

Предупреждение (2): MkDir(): Permission Denied [CORE/SRC/Cache/Двигатель/FileEngine.php, строка 417]

Предупреждение: file_put_contents (/var/www/html/my-application/logs/error.log) [function.file-пут-содержание]: не удалось открыть поток: Разрешение отказано в /вар/WWW /html/my-application/vendor/cakephp/cakephp/src/Log/Engine/FileLog.php on line 134

Предупреждение (512):/Var/WWW/HTML/мой-приложение/TMP/кэш/устойчивый/не записи [ОСНОВНОЙ/SRC/кэш/Двигатель/FileEngine.php, строка 425]

Предупреждение (2): file_put_contents (/var/www/html/my-application/logs/error.log) [function.file-put-contents]: не удалось открыть поток: разрешение отклонено [CORE/src/Log /Engine/FileLog.php, линия 134]

Предупреждение: file_put_contents (/var/www/html/my-application/logs/error.log) [function.file-пут-содержание]: не удалось открыть поток : Разрешение отклонено в /var/www/html/my-application/vendor/cakephp/cakephp/src/Log/Engine/FileLog.php на линии 134

Дело в том, что я уверен, что PHP имеет доступ ко всем необходимые файлы.

PHP работает как пользователь apache, в группе apache. Доказательства:

[[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 

Соответствующие каталоги принадлежат апачу: апач и разрешение установлены на 777 в любом случае:

[[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 

Подкаталоги в TMP/имеют правильные разрешения тоже:

[[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 

Я также попробовал повторное применение разрешений, на всякий случай, используя

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 

И я даже вошли как апач и редактировать файлы самостоятельно, без каких-либо проблем

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

Я действительно изо всех сил, чтобы выяснить, что этот вопрос может быть в настоящее время.

У нас установлен/включен SELinux, так что, возможно, это вызывает проблемы?

Справка была бы принята с благодарностью.

Спасибо,

YM

+0

Вы применили разрешение рекурсивно? Даже кеш должен быть доступен для записи, но также и подкаталоги – arilia

+0

@arilia yep, они выполняются рекурсивно. –

+1

Вы выполнили контрольный список устранения неполадок здесь http://stackoverflow.com/questions/36577020/failed-to-open-stream-no -such-file-or-directory? Он предоставляет элементы в случае SELinux. Это вполне может быть причиной –

ответ

1

Вопрос был SELinux Это было с использованием следующих команд:

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

Используется этот подход для CentOS FWIW ... – TekiusFanatikus

0

Все люди знают, установить разрешение на 777 не является хорошей практикой. Я нашел этот полезный совет в CakePHP installation doc, надеюсь, это поможет (;

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

Попробуйте это:.

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

chmod -R 777 /path/to/html/ 

Затем перезапустите HTTPd службу:

service httpd restart 
Смежные вопросы