这只是为我工作:
<?php
$cmd = "/usr/bin/php /home/auser/a.php &> /dev/null &";
exec($cmd,$output,$return);
sleep(30);
if($return===0)
{
echo 'Successful';
}
else
{
echo 'Unsuccessful';
}
?>
我救它作为runa.php并在命令窗口中的PHP runa.php运行它。 它产生了3个文件。
运行a.php只会也是从cron作业工作:
]$ crontab -l
18 * * * * /usr/bin/php /home/auser/a.php
我把剧本中的web目录,并发现我有一些写作的问题。你可以在服务器日志中看到什么?
sudo tail -f /var/log/httpd/error_log
如果从网络浏览器中打a.php会怎样?因为你提到的脚本是755,但是目录怎么样。也许它需要775或777进行测试,以便脚本可以写入文件?
为了测试我创建了一个子目录“输出”,改变a.php只会
<?php
ini_set('date.timezone','America/New_York'); //without this it makes extra messages
error_log("a.php putting contents", 0);
file_put_contents("output/".date("s"),"");
sleep(5);
file_put_contents("output/".date("s"),"");
sleep(5);
file_put_contents("output/".date("s"),"");
error_log("a.php done", 0);
?>
它无法写入文件,直到我给写权限的文件夹输出中
sudo chmod 777 /var/www/html/output
然后我发现了Apache用户正在写入文件:
~]$ sudo ls -l /var/www/html/output/
total 0
-rw-r--r--. 1 apache apache 0 Apr 18 11:38 00
-rw-r--r--. 1 apache apache 0 Apr 18 11:38 05
-rw-r--r--. 1 apache apache 0 Apr 18 11:37 55
所以我改变了输出的所有者,在ord呃再次调低听众的意见。
~]$ sudo ls -lu /var/www/html/ | grep output
drwxr-xr-x. 2 apache root 4096 Apr 18 12:21 output
这也适用于现在:
~]$ sudo ls -l /var/www/html/output
total 0
-rw-r--r--. 1 apache apache 0 Apr 18 12:21 44
-rw-r--r--. 1 apache apache 0 Apr 18 12:21 49
-rw-r--r--. 1 apache apache 0 Apr 18 11:37 55
PHP外壳脚本仍然** ** MUST有'<?php'在其中触发PHP模式。否则PHP会将其视为文本。记住:没有像“php脚本”这样的东西。只有那些有php代码块的文件。 –
自从bash成功返回以来,您每次都获得“成功” - 也许与您无关。 – Fergus
我知道,但是我应该怎么做才能使它工作? – Megadv