我必须在后台执行一个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';
}
?>
它返回" success "但不执行test.php
test.php:
<?
file_put_contents(date("s"),"");
sleep(5);
file_put_contents(date("s"),"");
sleep(5);
file_put_contents(date("s"),"");
?>
test.php每5秒写一个文件,它工作得很好,除非我尝试在后台用第一个脚本执行它。
可能是服务器问题吗?有没有另一种方法在后台运行脚本?
使用shell_exec和nohup
shell_exec("nohup php /home/megad404/www/prove/test.php > /dev/null & echo $!");
使用shell_exec并给出php的绝对路径:
$output = shell_exec("nohup /usr/bin/php7.0 -f /home/megad404/www/prove/test.php &> /dev/null &");
确认php在服务器中的绝对路径。例如,我使用php7.0,绝对路径是/usr/bin/php7.0
同时,给你正在运行的php文件可执行权限。
chmod +x /home/megad404/www/prove/test.php