Nginx - 无法打开流:/var/www/example.com中的权限被拒绝

时间:2016-06-08 19:12:27

标签: php nginx amazon-ec2

我的网站运行在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

4 个答案:

答案 0 :(得分:5)

搜索之后,我找到了它。这是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

答案 1 :(得分:0)

您还需要检查从

开始的每个文件夹的权限和所有权
/var/www/sites/

/var/www/sites/site1.com/up/propic/medium

答案 2 :(得分:0)

pool.d配置中定义的用户和组需要对nginx根位置的访问权限。这可以通过将pool.d配置中的用户和组更改为拥有nginx根位置的同一用户和组,或者将pool.d用户添加到拥有nginx根位置的组来完成。你可以这样做:

usermod -a -G groupName userName

答案 3 :(得分:0)

# 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