Nginx - не удалось открыть поток: в /var/www/example.com отказано в доступе

Мой веб-сайт работает на nginx + php-fpm и работает хорошо, но при загрузке файла отображается пустая страница. Мой файл журнала показывает

2016/06/08 14:44:40 [error] 22063#22063: *25 FastCGI sent in stderr: "PHP message: PHP Warning:  file_put_contents(up/propic/medium/5961465411480.jpg): failed to open stream: Permission denied in /var/www/example.com/saveimg.php on line 32" while reading response header from upstream, client:...

Я попробовал большинство ответов из stackoverflow, даже я изменил права доступа к папке /var/www на 777, но результаты такие же.

Немного подробностей о моем сервере

/etc/php-fpm.d

 user=nginx
 group=nginx

владение и группа /var/www/sites

drwxrwxrwx. 29 ec2-user root 4096 Jun  8 14:39 site1.com

person Raj    schedule 08.06.2016    source источник
comment
Что разрешает параметр функции file_put_contents? Похоже, это *something*/up/propic/medium/5961465411480.jpg, так что вам нужно проверить права доступа к каждой отдельной папке на пути к *something*/up/propic/medium/5961465411480.jpg   -  person amaksr    schedule 08.06.2016


Ответы (4)


После поиска я нашел его. Все дело в SELINUX, который является функцией безопасности. при использовании ls -Z

drwxrwxrwx. ec2-user root system_u:object_r:httpd_sys_content_t:s0 www

изменить это на

drwxrwxrwx. ec2-user root system_u:object_r:httpd_sys_rw_content_t:s0 www

используя cmd

chcon -R -t httpd_sys_rw_content_t /var/www
person Raj    schedule 08.06.2016
comment
это верно. ответ был здесь: stackoverflow.com/questions/36577020/failed-to-open-stream-no-such-file-or-directory/36577021#36577021 - person Vic Seedoubleyew; 12.06.2016
comment
О боже, это была ошибка для меня все выходные! Большое спасибо! Спас меня! - person zeros-and-ones; 20.11.2017
comment
Большое спасибо! Вы спасли мой день. У меня возникла аналогичная проблема с AppArmor на openSUSE. - person quicktrick; 18.01.2021

Вам также необходимо проверить разрешения и владельца каждой папки на пути от

/var/www/sites/

to

/var/www/sites/site1.com/up/propic/medium
person amaksr    schedule 08.06.2016

Пользователю и группе, определенным в вашей конфигурации pool.d, требуются права доступа к вашему корневому расположению nginx. Это можно сделать, изменив пользователя и группу в вашей конфигурации pool.d на того же пользователя и группу, которые владеют вашим корневым расположением nginx, или добавив пользователя pool.d в группу, которой принадлежит ваше корневое расположение nginx. Вы можете сделать это следующим образом:

usermod -a -G groupName userName
person Lonkey    schedule 08.06.2016

# nginx error.log echo:
2019/10/12 11:11:02 [error] 3871#0: *1 FastCGI sent in stderr: "PHP message: PHP Warning:  Unknown: failed to open stream: Permission denied in Unknown on line 0
Unable to open primary script: /www/test.php (Permission denied)" while reading response header from upstream, client: 192.168.1.9, server: _, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/run/php-fpm/www.sock:", host: "192.168.1.180"

В системе Centos после поиска я нашел это. Все дело в SELINUX, который является функцией безопасности. при использовании ls -alZ

drwxrwxrwx. ec2-user root system_u:object_r:httpd_sys_content_t:s0 www
# change this to
drwxrwxrwx. ec2-user root system_u:object_r:httpd_sys_rw_content_t:s0 www

# using cmd
chcon -R -t httpd_sys_rw_content_t /www
person asins    schedule 12.10.2019