Php Nginx stat()失败(13:权限被拒绝)

Php Nginx stat()失败(13:权限被拒绝),php,wordpress,unix,nginx,Php,Wordpress,Unix,Nginx,好吧,之前有过一些帖子,但没有解决方案可以解决我的问题 我已经配置了一个简单的HTML、CSS和JS站点,我正在尝试添加一个wordpress站点。我的wordpress站点配置如下 ####################### server { listen 80; root /usr/share/nginx/threadtheatre/wordpress; index index.php; server_name threadtheatre.co.uk; access_log /

好吧,之前有过一些帖子,但没有解决方案可以解决我的问题

我已经配置了一个简单的HTML、CSS和JS站点,我正在尝试添加一个wordpress站点。我的wordpress站点配置如下

#######################

server {
listen 80;

root /usr/share/nginx/threadtheatre/wordpress;
index index.php;
server_name threadtheatre.co.uk;

access_log   /var/log/nginx/thread.access.log;
    error_log    /var/log/nginx/thread.error.log;

location / {

            # try_files $uri $uri/ =404;
            try_files $uri $uri/ /index.php?q=$uri&$args;
}
    error_page 404 /404.html;

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
            root /usr/share/nginx/html;
    }

    location ~ \.php$ {
            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
    }

}
这就是我日志中的错误

"/usr/share/nginx/threadtheatre/wordpress/index.php" failed (13: Permission denied), client: 109.155.53.189, server: threadtheatre.co.uk, request: "GET / HTTP/1.1", host: "threadtheatre.co.uk"
nginx正在使用nginx用户,同样地,对于phpfpm也是如此。nginx目录及其所有子目录具有以下权限

drwxrwxr-x.  3 root nginx  4096 Feb  8 18:23 ..
如果我在网上浏览threadtheatre.co.uk,我会得到404

希望有人能帮上忙


李。

您是否已授予-R的权限

chown -R nginx /usr/share/nginx/threadtheatre/wordpress/
chmod -R 644 /usr/share/nginx/threadtheatre/wordpress/

你还有这个问题吗?这一解释对我起了作用:


基本上,nginx需要对应用程序路径上的每个目录都有执行权限。希望这有帮助。

对我来说,这是因为启用了selinux,请检查

selinuxenabled && echo enabled || echo disabled
如果启用,请尝试禁用

nano /etc/sysconfig/selinux
SELINUX=disabled
然后


如果
nginx
托管在
Fedora
RedHat
上,请更改
SELinux
策略,并允许
nginx
从路径/home/path/site

chcon -R -t httpd_sys_content_t /home/path/site

正在使用什么操作系统?这对我来说也很有用。与直觉相反(我认为读取权限足够了,但nginx需要
+x
目录)。这不是特定的nginx,它是通用的linux(甚至对于unix,也不确定)。目录上的权限行为与文件上的权限行为稍有不同。目录的
x
位称为搜索位,需要能够进入目录并访问其中的文件和目录。你可以自己尝试创建一个目录,删除
x
位(
chmod a-x
),然后尝试
cd
。这就是答案…nginx需要对应用程序路径上的每个目录都有执行权…非常奇怪
chcon -R -t httpd_sys_content_t /home/path/site