【发布时间】:2013-04-16 21:25:08
【问题描述】:
我必须在后台执行一个 php 脚本 (a.php)。我试过了,但它不起作用:
<?
$cmd = "php /home/megad404/www/prove/a.php &> /dev/null &";
exec('/bin/bash -c "'.$cmd.'"',$output,$return);
if($return===0)
{
echo 'Successful';
}
else
{
echo 'Unsuccessful';
}
?>
它返回“成功”但它不执行 a.php
a.php:
<?
file_put_contents(date("s"),"");
sleep(5);
file_put_contents(date("s"),"");
sleep(5);
file_put_contents(date("s"),"");
?>
a.php 每 5 秒写入一个文件,它工作正常,除非我尝试使用第一个脚本在后台执行它。
【问题讨论】:
-
php shell 脚本仍然必须在其中包含
<?php以触发 php 模式。否则 php 只会将其视为文本。请记住:没有“php 脚本”之类的东西。只有文件中包含 php 代码块。 -
自从 bash 成功返回以来,您每次都“成功”——也许与您的 php 无关。
-
我知道,但我应该怎么做才能让它发挥作用?
-
根据问题stackoverflow.com/questions/4646788/…你不需要使用
bash -c。如果你按照那里显示的那样做,它会起作用吗? -
删除 /bin/bash -c 然后运行它。您可能需要 php.ini 的完整路径。
which php会帮你拿的。
标签: php background exec