使用nohup执行PHP脚本返回Exit 255问题求助
解决nohup执行PHP脚本返回Exit 255的问题
以下是针对该问题的排查和解决建议:
捕获完整错误输出:当前命令仅重定向了标准输出,标准错误未单独记录,建议修改命令同时捕获stderr,以便查看具体错误信息:
nohup php /usr/lib/backhandler/backprc.php > backprc.log 2> backprc.err &执行后查看
backprc.err文件,里面会包含PHP执行时的错误详情,这是定位问题的关键。直接执行脚本排查PHP层面问题:跳过nohup,直接在终端执行脚本,看是否能正常运行或输出错误:
php /usr/lib/backhandler/backprc.php如果执行失败,终端会直接显示错误,比如扩展缺失、环境兼容问题等。
检查权限与SELinux限制:
- 确认
/usr/lib/backhandler/backprc.php的权限(ls -l /usr/lib/backhandler/backprc.php),以及脚本读写的目标文件/目录权限是否正常; - 若服务器开启了SELinux,可临时执行
setenforce 0关闭,再测试脚本是否能正常运行。如果恢复正常,需要调整SELinux策略,允许脚本的相关操作。
- 确认
使用PHP绝对路径执行:避免环境变量PATH变化导致的PHP路径问题,先通过
which php获取PHP的绝对路径(比如/usr/bin/php),然后修改命令:nohup /usr/bin/php /usr/lib/backhandler/backprc.php > backprc.log 2>&1 &检查系统资源与环境变化:
- 查看系统日志(
/var/log/messages或/var/log/syslog),确认是否有进程被OOM Killer终止、文件句柄耗尽等资源相关报错; - 检查PHP版本是否被更新(
php -v),或相关扩展是否被禁用(php -m),环境变更可能导致旧脚本兼容问题。
- 查看系统日志(
排查脚本依赖服务:确认脚本依赖的外部服务(如数据库、Redis、API接口)是否正常,比如数据库密码是否过期、API是否可达,这些依赖故障会导致脚本执行失败返回255。
内容的提问来源于stack exchange,提问作者Rey
相关产品推荐
相关产品推荐

