一次部署wordpress时,使用了如下server配置:
server {
listen 80;
server_name word.cn;
root /Users/steven/workspace/wordpress;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/usr/local/opt/php55/sock/php-fpm.sock;
}
}
分别在服务器和开发机上部署,之后发现服务器上可以正常访问,开发机却死活不行,每次都是白页。
服务器的系统是ubuntu,直接使用apt-get安装的nginx。
开发机是mac,使用brew安装。
最后无奈只好使用源码重新编译,打开了调试模式(--with-debug),经历一番折磨后,终于找到问题。
是因为fastcgi_params配置文件中的SCRIPT_FILENAME问题,使用源码和brew安装的nginx,fastcgi_params配置文件中是没有SCRIPT_FILENAME这个参数的,需要在server中自己填写,而在ubuntu中使用apt-get安装时是有的。
而要使用上面的wordpress的配置,则必须保证fastcgi_params文件中包含下面的配置:
fastcgi_param SCRIPT_FILENAME $request_filename;
否则fastcgi无法找到要执行的脚本文件。