PHP-FPM在macOS上使用Nginx发送空响应

我在macOS 10.12.4上安装了nginx 1.10.3和php 5.5.38作为开发服务器

当我在浏览器中尝试测试php文件时,正文为空,但响应标题似乎正常:

HTTP / 1.1 200好的
服务器:nginx / 1.10.3
日期:2017年3月29日星期三,格林威治标准时间11:35:21
内容类型:text / html
转移编码:分块
连接:保持活力
X-Powered-By:PHP / 5.5.38

php-fpm.log或nginx / error.log中没有错误

我的nginx.conf有:

server {
    listen       80;
    server_name  wordpress.bob;
    root /Users/mark/Sites/wordpress;     

    include /usr/local/etc/nginx/global_restrictions.conf;
    include /usr/local/etc/nginx/wordpress.conf;

    location ~ \.php${
      try_files $uri =404;
      fastcgi_split_path_info ^(.+\.php)(/.+)$;
      fastcgi_pass   unix:/usr/local/var/run/php-www.sock;
      fastcgi_index  index.php;
      include        fastcgi_params;
    }

}

wordpress.bob是一个本地主机名,用于测试指向etc / hosts中的127.0.0.1

php-fpm.conf有:

listen = '/usr/local/var/run/php-www.sock'

我有什么想法我做错了吗?

解决方法:

没有能力读取所有配置文件很难帮助.

你刚刚发布了一个,而不是包含的,也没有php-fpm.conf.这不是不赞成的(配置文件的墙在问题中不太合适)但是只是要指出我们“看不到”的配置文件可能因安装而异.

无论如何,我看到我在wordpress网站的服务器上的配置文件有一些差异.

这里有一些提示,考虑到你没有得到任何错误php-fpm正在运行,nginx可以通过套接字与它“通信”(否则你会得到一个糟糕的网关错误).

一开始……

server {
    listen       80;
    server_name  wordpress.bob;
    root /Users/mark/Sites/wordpress;     

    index index.php; # <-- ADD THIS

确保你在wordpress.conf中包含

location / {
        try_files $uri $uri/ /index.php?$args;
}

最后一部分……

location ~ \.php${
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_buffer_size 128k;
    fastcgi_buffers 256 16k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 512k;
    fastcgi_intercept_errors on;
    fastcgi_max_temp_file_size 0;
    fastcgi_connect_timeout 3s;
    fastcgi_send_timeout 5s;
    fastcgi_read_timeout 5s;
    include fastcgi.conf; # <--- fastcgi.conf, NOT fastcgi_params
    fastcgi_pass /usr/local/var/run/php-www.sock;
}

fastcgi.conf和fastcgi_params(在我的安装上)之间的区别只有一行:

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

如果缺少这一行,PHP代码无法读取$_SERVER [‘SCRIPT_FILENAME’]和(我认为)这可能会破坏wordpress代码导致空输出.

最后确保php-fpm工作进程有权访问/usr/local/var/run/php-www.sock

通常套接字具有相同的所有者:工作者组.

worker用户和组在php-fpm.conf中设置:

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = ......
group = ......

相关文章

最近做自动化测试时,深感自己对前端涉猎太少,加上对这块比...
homebrew本身就是一个git仓库。使用homebrew安装软件包时,会...
一、Homebrew安装、卸载等命令Homebrew的安装和卸载都非常简...
在mac系统中,使用homebrew可以很方便的管理包。按照官网的说...
我按照说明从这里使用brew安装mysqlhttps://gist.github.com...
我在macOS10.12.4上安装了nginx1.10.3和php5.5.38作为开发服...