我必须在后台执行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';
}
?>
返回“Successful”但不执行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秒写一个文件,它工作正常,除非我尝试在后台用第一个脚本执行它。
可能是服务器问题吗?还有另一种在后台运行脚本的方法吗?
答案 0 :(得分:0)
使用shell_exec和nohup
shell_exec("nohup php /home/megad404/www/prove/test.php > /dev/null & echo $!");
答案 1 :(得分: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