You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过PHP shell_exec运行Node脚本,登出后无法正常执行

解决方法
  • 使用node绝对路径执行
    先通过SSH执行which node获取node的绝对路径(例如/usr/local/bin/node),将代码修改为:

    shell_exec('nohup /usr/local/bin/node script.tjs > /dev/null 2>&1 &')
    

    原因是SSH登出后系统PATH环境变量可能发生变化,导致找不到node命令。

  • 改用setsid脱离终端会话
    setsid能让进程脱离当前终端,不受SSH登出影响,调整命令为:

    shell_exec('setsid /usr/local/bin/node script.tjs > /dev/null 2>&1 &')
    
  • 检查supervisor配置
    确认supervisor配置文件中,PHP进程的environment项包含必要的PATH参数,或者直接在配置里指定node的绝对路径;同时设置directory为script.tjs所在的目录,避免相对路径引发的问题。

  • 替换shell_exec为pcntl扩展创建子进程(可选)
    如果上述方法无效,可以尝试用PHP的pcntl扩展创建更稳定的子进程,示例代码:

    $pid = pcntl_fork();
    if ($pid == -1) {
        die('进程创建失败');
    } elseif ($pid == 0) {
        // 子进程执行node脚本
        exec('/usr/local/bin/node script.tjs > /dev/null 2>&1');
        exit(0);
    }
    

    注意需要确保PHP环境已安装pcntl扩展。

内容的提问来源于stack exchange,提问作者Jacobson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 14:04:50