使用nginx + php-fpm搭建服务器的时候,可能会出现File not found.的问题。出现问题原因可能有:
1. 真的没有文件;
2. nginx/conf.d/下的配置文件,路径错误;
3. 目录权限问题。
这篇博客讨论第三种情况。
在使用nginx + php-fpm搭建服务器时,有三个地方的权限要保持通畅(这个动词可能不太合适,领会精神吧)。
- nginx的工作进程的用户;
- php-fpm的工作进程的用户;
- 项目目录的用户;
简单说,nginx的工作进程用户要和php-fpm的工作进程用户一致,同时有权限访问项目目录。
用yum安装nginx和php-fpm的话,nginx的配置文件在/etc/nginx/nginx.conf,php-fpm的配置文件在/etc/php-fpm.d/www.conf。
nginx.conf做如下配置:
user nginx;
……
php-fpm.d/www.conf作如下配置:
……
user = nginx
group = nginx
……
对于项目目录,要使nginx用户有读(写)权限,需要对项目目录的顶级父目录执行如下命令:
chmod 777 -R {目录}
也就是让nginx用户可以访问项目目录。
或者,将项目目录的顶级父目录(/下),更改所有者为nginx,执行如下命令:
chown nginx.nginx -R {目录}
一般而言,会把项目目录放在根目录下,这样,只要直接改变项目目录所有者为{自己的非root用户}并把权限改为777,就可以优雅解决问题了。
而如果使用test用户,将项目目录建立在自己的~家目录下面,要让nginx可以访问,需要配置/home/test目录为可读(写),这样会导致任意用户可以访问test用户下的文件,可能会带来安全问题,反而得不偿失。