2014-10-10 130 views
0

我试图在UTC时间01:00每天运行一个php脚本。我有我的crontab中的
00 01 * * * /usr/bin/php -f /var/www/html/test.php
,但由于某些原因,它没有运行我的脚本。我知道脚本本身是有效的,因为我测试了它。它只是不会在crontab中运行。我也试过使用在crontab中运行php脚本

00 01 * * * php /var/www/html/test.php 

但这也没有工作。我已将#!/usr/bin/php添加到我尝试运行的php脚本的开头。我也尝试了-q而不是-f。没有任何工作,我不知道我能做些什么来解决这个问题。如果这仍然不起作用,还有其他方法可以尝试吗?

+1

其中所有者和组不属于test.php的调用

http://localhost/test.php 

?你有没有试过从命令行运行它? – 2014-10-10 20:35:21

+0

另外,你是否指定了正确的PHP路径? – Venice 2014-10-10 20:36:23

+0

这是一个由root用户创建的文件。我也尝试使用chmod + x test.php 更改权限在命令行上,我运行命令“php /var/www/html/test.php”,脚本完成了我想要的操作。 – fcr91 2014-10-10 20:38:37

回答

0

我最终做的是写一个ksh脚本,导出更多路径,然后运行php脚本。这工作。

export ORACLE_HOME=/opt/oracle/product/11.2.0/client export LD_LIBRARY_PATH=/opt/oracle/product/11.2.0/client/lib/ export PATH=$PATH:/opt/oracle/product/11.2.0/client/bin php /var/www/html/test.php

0

确保您的路径正确。尝试这种语法:

cd /var/www/html; php -q -c ./ test.php 

-q标志禁止任何标题()被写入到标准输出。这会强制您的脚本使用php-cgi二进制文件而不是命令行版本来执行。

-c标志可防止操作系统改变目录,因为您使用cd来做到这一点。

+0

你/不应该/需要指定PHP的路径.. – 2014-10-10 20:41:11

+0

是这对于crontab? – fcr91 2014-10-10 20:59:30

+0

yessir。 @ fcr91您可以使用分号一次执行两个命令。 – 2014-10-10 22:17:37

-1

为什么不直接让文件成为可执行文件(chmod 750 /var/www/html/test.php),然后用shebang启动它?

#!/usr/bin/php 
<?php 
.... 
?> 

然后你的cron作业只需要引用脚本。

00 01 * * * /var/www/html/test.php 

注意我对该文件使用了750个权限以使其可执行用户和组。如果它是由别人运行它将需要755.

+0

-1对shebang没有给出任何解释。我的答案中的-q标志具有完全相同的效果,无需修改任何代码。 – 2014-10-10 22:19:04

+0

也是,theres没有理由755 cron工作。 750绰绰有余。 – 2014-10-10 22:20:15

+0

权限全部取决于谁在运行脚本。但这是一个好点,我会记下它。 – miken32 2014-10-10 22:58:09

0

具有本地 Web服务器正在运行,你可以从你的crontab