单独启动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人回答 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; } } 根据您描述的情况和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]