Php 如何使用shell_exec()触发吞咽任务?

Php 如何使用shell_exec()触发吞咽任务?,php,node.js,bash,deployment,gulp,Php,Node.js,Bash,Deployment,Gulp,我正在尝试设置一个系统,当我推送到GitHub上的存储库时,它会自动在远程服务器上进行拉取和编译。我发现了一些非常有用的东西来让它工作,但我仍停留在最后一步:执行我的任务,gulp--dist 我用它来触发拉力,效果很好。为了尝试添加一个额外的选项,AFTER\u PULL,我将该存储库分叉,该选项在拉取完成后执行一个shell命令。(另见下文)。在config.php中,我将设置以下内容: define('AFTER_PULL', 'node ./node_modules/gulp/bin/g

我正在尝试设置一个系统,当我推送到GitHub上的存储库时,它会自动在远程服务器上进行拉取和编译。我发现了一些非常有用的东西来让它工作,但我仍停留在最后一步:执行我的任务,
gulp--dist

我用它来触发拉力,效果很好。为了尝试添加一个额外的选项,
AFTER\u PULL
,我将该存储库分叉,该选项在拉取完成后执行一个shell命令。(另见下文)。在config.php中,我将设置以下内容:

define('AFTER_PULL', 'node ./node_modules/gulp/bin/gulp.js --dist');
这似乎永远不会触发,也不会触发任何错误

我认为这可能是一个权限问题,但是用户(www-data)有权在所有必要的目录中工作。我发现了,但在完成这些步骤后,它仍然不起作用

我肯定我一定是做错了什么,我就是看不出来。如果我在带有
sudo-Hu www-data
的终端中运行该命令,则该命令有效

...

if (!empty(AFTER_PULL)) {
    try{
        shell_exec(AFTER_PULL);
    }catch (Exception $e) {
        fputs($file, $e . "\n");
    }
}

...

使用节点二进制文件的完整路径:

define('AFTER_PULL', ' /usr/bin/node ./node_modules/gulp/bin/gulp.js --dist');

您尝试过节点二进制文件的完整路径吗?我没有,现在将尝试。@Peter哇,我想就是这样了。我知道这是件愚蠢的事谢谢我会以正常的方式回答问题,请接受,谢谢