刚刚将网站从没有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调用
答案 0 :(得分:0)
这是正确的,您需要找出CLI PHP路径并使用它来启动该过程。遗憾的是,这并不是完全标准化的,但是在* nix机器上,通常使用PHP_BINDIR .'/php'
(PHP_BINDIR是PHP常量)来使用正确的。
答案 1 :(得分:0)
您可以尝试检查网络服务器用户是否有权使用bash。