在php中调用exec()

时间:2018-03-07 18:38:06

标签: php linux

刚刚将网站从没有cpanel的linux服务器迁移到带有cpanel的服务器。我的问题是当我点击开始启动执行php文件的进程时。它不会运行该文件。如果我从终端运行文件,一切正常。

调用该文件的代码。

if ($do === "start_service") {
     create_marker_file("$service_running_marker");
     system_bg("php $dir/$service_script");
     $message = "Started Service!";
     $running = true;
     $status = "Running";
}

systembg是一个功能。

function system_bg($command) {
    exec('bash -c "exec nohup setsid ' . $command . ' > /dev/null 2>&1  &"');
}

如果我在终端ps ax | grep service.php看到这个

/opt/cpanel/ea-php70/root/usr/bin/php-cgi /home/xsocial1/public_html/xsmp/service.php

当我在终端中运行文件时,这就是我在运行ps ax | grep service.php

时看到的内容
/opt/cpanel/ea-php70/root/usr/bin/php service.php

我认为我的问题是我需要服务器调用cli调用而不是cgi调用

2 个答案:

答案 0 :(得分:0)

这是正确的,您需要找出CLI PHP路径并使用它来启动该过程。遗憾的是,这并不是完全标准化的,但是在* nix机器上,通常使用PHP_BINDIR .'/php'(PHP_BINDIR是PHP常量)来使用正确的。

答案 1 :(得分:0)

您可以尝试检查网络服务器用户是否有权使用bash。