gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:34:35 25 4
gpt4 key购买 nike

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

当我在浏览器中尝试测试 php 文件时,正文是空的,但响应 header 似乎没问题:

HTTP/1.1 200 OK
服务器:nginx/1.10.3
日期:2017 年 3 月 29 日星期三 11:35:21 GMT
内容类型:文本/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.conffastcgi_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 组。

workers 用户和组在 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 = ......

关于PHP-FPM 在 macOS 上使用 Nginx 发送空响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43093202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com