我在“/etc/php5/fpm/php-fpm.conf”中添加了两行。内容如下:
chroot = /home/user/www/public_html
chdir = /
在我的服务器部分:/etc/nginx/sites-available/default:
root /home/user/www/public_html/site.com;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT /site.com;
fastcgi_param SCRIPT_FILENAME /site.com$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED /site.com$fastcgi_script_name;
}
nginx(或者我认为是 fpm)告诉我:“文件未找到”。好的,我执行以下操作:
root /home/user/www/public_html/site.com;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param DOCUMENT_ROOT /home/user/www/public_html/site.com;
fastcgi_param SCRIPT_FILENAME /home/user/www/public_html/site.com$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED /home/user/www/public_html/site.com$fastcgi_script_name;
}
现在一切正常。fpm 中的 chroot 有什么问题?是的,顺便问一句 - 为什么我设置了 chroot 值后它现在还能正常工作!我以为它可能使用了另一个配置,但是:
# ps aux | grep php
root 4696 0.0 1.3 221452 13768 ? Ss 16:52 0:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
我的错在哪里?如何找出问题的根源?看起来这里的 chroot 并没有 chroot 我的系统 :) 我是否需要做其他事情才能让 chroot 正常工作?
我还有:
# cat /var/log/nginx/site.com-errors.com.log
2014/12/02 17:11:20 [error] 5472#0: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: ...., server: site.com, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "site.com"
Ubuntu 14.04:
# php5-fpm -v
PHP 5.5.9-1ubuntu4 (fpm-fcgi) (built: Apr 9 2014 17:11:57)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
# nginx -v
nginx version: nginx/1.4.6 (Ubuntu)
看来 chroot 在 php5-fpm 中不再起作用了。之前它对我来说还能用一段时间。
答案1
因此,您在 chroot 中运行一个池,但您的路径指向没有 chroot 的目录树。您应该更改fastcgi_param
选项中的路径以反映 chroot 内的实际路径,这样 chrooted php-fpm 就能正确理解在哪里查找 php 脚本。
答案2
我已经解决了这个问题。我没有对我的配置做任何更改。我刚刚执行了“aptitute update && aptitude upgrade”,然后它就可以与上面列出的配置配合使用了。所以我认为那是一个错误。