Ошибка разрешений CakePHP

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

Когда я перехожу на свой сайт CakePHP, я получаю следующие ошибки

Предупреждение (2): mkdir (): В доступе отказано
[CORE / src / Cache / Engine / FileEngine.php, строка 417]

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

Предупреждение (512): / var / www / html / my-application / tmp / cache / persistent / не является
доступный для записи [CORE / src / Cache / Engine / 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-put-contents]: не удалось открыть поток: в доступе отказано
в
/var/www/html/my-application/vendor/cakephp/cakephp/src/Log/Engine/FileLog.php
по линии 134

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

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

[ec2-user@cv-stg01 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

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

[ec2-user@cv-stg01 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 / также имеют правильные разрешения:

[ec2-user@cv-stg01 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

И я даже вошел как apache и отредактировал файлы сам, без проблем

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

Я действительно изо всех сил пытаюсь решить, что проблема могла быть теперь.

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

Помощь будет принята с благодарностью.

Спасибо,

YM

4

Решение

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

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

chmod -R 777 /path/to/html/

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

service httpd restart
3

Другие решения

Проблема была в 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

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

setfacl -R -m u:apache:rwx app/tmp
setfacl -R -d -m u:apache:rwx app/tmp
0
По вопросам рекламы [email protected]