我们正在使用 php-fpm,如果我们更改 nginx.conf 中的“root”值,脚本将无法正常工作。
location ~ \.php$ {
root /usr/share/nginx/html ;
如果我们将该根目录更改为指向其他目录,即使它是 /usr/share/nginx/html/crap,它也不会起作用。该目录当然存在。就像它可以读取该目录中的文件,但不能执行它。我检查了所有文件权限。有人知道吗?
答案1
您提供的配置将把 php 文件作为具有根“root”的静态文件。“root”指令仅影响静态数据。
php-fpm 是 php 的 fastcgi 进程管理器。对于 nginx 中的 fastcgi,有一组以“fastcgi_”前缀开头的参数。
如果你使用 php-fpm,你可能希望 php 脚本由 php-fpm worker 执行。因此,nginx 应该将发往 php 的请求通过 fastcgi_pass 传递到合适的 php-fpm 池。
就像是
location ~* \.php {
fastcgi_pass 127.0.0.1:9000;
}
答案2
您能否提供更多关于 nginx 设置的信息,例如,您是否有 vhost 或只有一个站点。如果是 vhost,您是否使用 sited-enabled、sites-available 设置或类似设置。这样做可能更容易,只需包含 sited-enabled 的位置,例如“include /usr/local/nginx/sites-enabled/*;”在 nginx 配置中,然后创建两个文件夹,其中一个文件夹包含 vhost 文件,并带有特定的重写规则等,然后 ln -s 将其放入 sited-enabled 文件夹中。例如,vhost 文件可以指向主目录中的文件夹,您不应该有任何权限问题等。这对 npm 设置没有帮助,但应该为您指明正确的方向,重新进行初始设置和配置nginx