【发布时间】:2014-09-22 22:08:27
【问题描述】:
我正在努力让 NGINX 和 PHP-FPM 有效地交谈。我的 NGINX 配置文件包含以下api 偏移量的定义:
location /api {
try_files $uri /api/index.php$is_args$args;
gzip off;
fastcgi_pass PHP:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_keep_conn off;
include fastcgi_params;
}
在我的 PHP 机器上,我有以下池配置:
[api]
listen = 9000
user = www-data
group = www-data
pm = dynamic
pm.max_children = 10
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 5
pm.status_path = /status
然后我跟踪 NGINX 服务器的日志文件,并在访问网络服务器时使用:
http://localhost/api
# or
http://localhost/api/index.php
# or ...
http://localhost/api/resources.json
我可以从 NGINX 服务器日志中看到 NGINX 正确匹配 /api 模式,但我收到以下错误:
[error] 14#0: *1 FastCGI sent in stderr: "Unable to open primary script: /app/html/websites/couchbase/api/index.php (No such file or directory)"
PHP 机器上的根目录是/app/html/websites/couchbase。我完全不知道这个错误的真正含义,或者更重要的是如何从这里调试它。任何帮助将不胜感激。
附言我尝试将 fast_cgi_param 中的 $document_root 引用替换为硬编码值,看看它是否有所作为。从某种意义上说,如果我将它指向一个不正确的目录,它会给我
No input file specified. 错误。我得到错误的唯一地方是它似乎指向正确的地方。
添加这个以防它有助于澄清...这是 PHP/FPM 机器上/app/html/websites/couchbase/api 的文件系统。
我创建了test.php 文件,该文件基本上只是回显“Ok”,但这并不比运行index.php 的主要目标更好。
注意:我不确定执行权限是否重要——如您所见,
test.php没有在图片中设置它们——但我已经尝试了两种方式,似乎没有任何区别。
【问题讨论】: