1

我必须在后台执行一个 php 脚本(test.php)。我试过这个,但它不工作:

<?
$cmd = "php /home/megad404/www/prove/test.php &> /dev/null &";
exec('/bin/bash -c "'.$cmd.'"',$output,$return);
if($return===0)
{
    echo 'Successful';
} 
else
{
    echo 'Unsuccessful';
}
?>

它返回“成功”但它不执行 test.php

测试.php:

<?
file_put_contents(date("s"),"");
sleep(5);
file_put_contents(date("s"),"");
sleep(5);
file_put_contents(date("s"),"");
?>

test.php 每 5 秒写入一个文件,它工作正常,除非我尝试使用第一个脚本在后台执行它。

会不会是服务器问题?还有另一种在后台运行脚本的方法吗?

4

2 回答 2

1

使用 shell_exec 和 nohup

shell_exec("nohup php /home/megad404/www/prove/test.php > /dev/null & echo $!");
于 2013-04-17T12:56:31.707 回答
0

使用 shell_exec 并给出 php 的绝对路径:

$output = shell_exec("nohup /usr/bin/php7.0 -f /home/megad404/www/prove/test.php &> /dev/null &");

只需确认服务器中 php 的绝对路径即可。例如,我使用的是 php 7.0,绝对路径是 /usr/bin/php7.0

此外,为您从代码运行的 php 文件授予可执行权限。

chmod +x /home/megad404/www/prove/test.php
于 2019-01-08T09:42:19.357 回答