nginx 反代 到 8787 端口
在xshell中,进入程序根目录下
执行 php start.php start 调试正常
执行 php start.php start -d ,如果不关闭当前ssh终端,也是正常
如果一旦关闭了当前 ssh终端窗口,网站就是 502,而另开一个ssh终端,执行 php start.php status 显示进程都在,
php版本
此时正常网站, 关闭当前ssh窗口后,刷新网页502
另开一个ssh终端, 执行 php start.php status,看起来似乎无错
nginx配置
location / {
error_page 403 = @webman;
error_page 404 = @webman;
error_page 405 = @webman;
try_files ${uri} ${uri}/ ${uri}/index.html @webman;
}
## WEBMAN LOCATION
location @webman {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8787;
}
====
已解决
在 502时,runtime下error.log 没有产生错误或异常日志,只有 master.log 里提示 进程退出 exit with status 65280
目前问题解决了。 方法是:删掉控制器中所有 echo 和 print_r 输出,就可以了。
具体为什么不知道,总之反复测试发现,删掉这些输出就正常,加上后daemon模式就502。
lsof -np 28010
是用root用户操作的吗?
是的。初步判断貌似和 afterAction(Request $request, $response) 有关,我删掉了 afterAction 方法就可以了,但只要加上,即使 afterAction 函数体为空也不行
Exception里打个log,.没有log谁都帮不了你
在 502时,runtime下error.log 没有产生错误或异常日志,只有 master.log 里提示 进程退出 exit with status 65280
目前问题解决了。 删掉了 方法里所有的 echo 和 print_r 输出,就可以了。具体因为什么不知道,总之删掉这些输出就正常,加上就502
可能你使用的PHP版本有问题,比如使用了dev版本。运行php -v 贴下结果,贴全
PHP 8.1.7 (cli) (built: Jun 10 2022 12:03:08) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.7, Copyright (c) Zend Technologies
截图已贴
执行lsof -np 22696(22696是php start.php status里看到的一个子进程的pid),执行lsof -np 22696截图下后半部分
lsof -np 28010
截图在正文底部
看样子是标准输出没有重定向成功,之前遇到过1-2个用户反馈这样的案例,换个php版本就好了。或者代码里不打印数据也行
原来如此,多谢☺
目前看php 8.0.20 php8.1.7 php8.1.8有bug,无法重定向标准输出。
workerman4.0.41 版本做了兼容,执行命令更新
composer require workerman/workerman ^4.0.41
https://github.com/php/php-src/issues/8827
https://github.com/php/php-src/issues/8835
https://github.com/php/php-src/pull/8953
php官方相关帖子