哥斯拉 发表于 2023-6-18 09:37:52

单独启动nginx和phpcgi无法访问UCenter

问题需求:
1,点击 站长 ==》UCenter设置 后,正常显示通信成功
2,window环境

问题描述:
1,用apache 部署 -正常
2,用phpstudy_pro 启动nginx(会自动启动 php-cgi) - 正常
3,curl -X POST http://localhost/upload/uc_server/index.php?__times__=1 我尝试用命令 竟然可以请求通。 - 正常
3,手动启动nginx 和 php-cgi.exe -b 127.0.0.1:9899 -c php.ini 后- 连接不通,nginx提示错误如下:手动启动的时候,都是在window环境下 以管理员的身份运行的。
   2023/06/18 08:02:05 13016#24968: *4 WSARecv() failed (10054: An existing connection was forcibly closed by the remote host) while reading response header from upstream,   client: 127.0.0.1, server: localhost, request: "POST /upload/uc_server/index.php?__times__=1 HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost"

问题:
1,求大佬指点,问题出在那里
我知道答案 回答被采纳将会获得1 贡献 已有1人回答

拾光 发表于 2023-6-18 09:38:20

nginx 配置 我觉得是没问题的。

server {      listen      80;      server_namelocalhost;      root   "D:/app/Apache24/htdocs";      location / {            # index index.php index.html;            # First attempt to serve request as file, then            # as directory, then fall back to displaying a 404.            try_files $uri $uri/index.php /index.php?$query_string;            error_page 400 /error/400.html;            error_page 403 /error/403.html;            error_page 404 /error/404.html;            error_page 500 /error/500.html;            error_page 501 /error/501.html;            error_page 502 /error/502.html;            error_page 503 /error/503.html;            error_page 504 /error/504.html;            error_page 505 /error/505.html;            error_page 506 /error/506.html;            error_page 507 /error/507.html;            error_page 509 /error/509.html;            error_page 510 /error/510.html;            include D:/app/Apache24/htdocs/nginx.htaccess;            autoindexoff;      }      location ~ \.php(.*)$ {            fastcgi_pass   127.0.0.1:9000;            fastcgi_indexindex.php;            fastcgi_split_path_info^((?U).+\.php)(/?.+)$;            fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;            fastcgi_paramPATH_INFO$fastcgi_path_info;            fastcgi_paramPATH_TRANSLATED$document_root$fastcgi_path_info;            include      fastcgi_params;      }    }

Discuz智能体 发表于 2025-3-14 03:39:22

根据您描述的情况和Nginx的错误日志分析,问题可能出在以下几个方面:

1. **PHP-CGI端口监听不一致**
- 您手动启动PHP-CGI时指定的端口是`9899`(`-b 127.0.0.1:9899`)
- 但Nginx错误日志显示上游地址是`fastcgi://127.0.0.1:9000`
- 解决方法:修改Nginx配置中的fastcgi_pass参数,使其与实际PHP-CGI端口一致

2. **PHP-CGI进程未正确启动**
建议检查以下步骤:
# 查看端口监听情况(cmd执行)
netstat -ano | findstr ":9899"
# 查看php-cgi进程是否存在
tasklist | findstr "php-cgi"

3. **正确的配置流程**
建议按以下步骤重新配置:

# Nginx配置文件示例
location ~ \.php$ {
    root         html;
    fastcgi_pass   127.0.0.1:9899; # 必须与php-cgi启动端口一致
    fastcgi_indexindex.php;
    fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;
    include      fastcgi_params;
}

4. **Windows环境特别注意事项**
- 建议使用完整路径启动php-cgi:
start /B php-cgi.exe -b 127.0.0.1:9899 -c C:\php\php.ini
- 检查防火墙设置,允许9899端口的入站连接
- 确保PHP.ini中开启必要扩展:
extension=curl
extension=openssl
extension=mbstring

5. **UCenter通信专用检查**
在完成上述配置后,建议进行以下验证:
# 测试PHP解析是否正常
curl -I http://localhost/upload/uc_server/index.php

# 测试UCenter通信接口
curl -X POST http://localhost/upload/uc_server/index.php -d "m=admin&a=test"

如果仍然出现`10054`错误,建议在Nginx配置中添加:
fastcgi_read_timeout 300; # 适当延长超时时间

请特别注意:当手动启动php-cgi时,该进程不会像php-fpm那样自动管理,需要保持命令行窗口持续运行。如果需要后台运行,可以使用以下vbs脚本:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "php-cgi.exe -b 127.0.0.1:9899", 0
Set WshShell = Nothing

建议按照这个顺序排查,先确保PHP解析正常,再处理UCenter通信问题。如果仍无法解决,可以提供更多环境细节(PHP版本、Nginx配置完整片段等)进一步分析。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 单独启动nginx和phpcgi无法访问UCenter