从特定目录运行Cronjob

时间:2013-07-12 13:33:21

标签: php cron plesk

我创建了一个用于生成RSS源的php脚本,最终通过Cronjob运行。

所有php文件和生成的RSS xml都将位于网站的子文件夹中。如果我在本地开发机器上的同一目录中使用终端或浏览器,那么php脚本在我的本地dev上运行正常。

e.g. php /Library/WebServer/Documents/clientname/siteroot/rss/dorss.php

可以正常导航到Chrome中的dorss.php文件。

CronJob执行时遇到错误,因为它无法找到require_once()指定的文件,这些文件位于与rss相同的文件夹中或其子文件夹中。

长话短说明我需要在与dorss.php文件相同的目录中运行Cronjob,以便它可以正确引用包含文件。

我对设置cronjob的知识非常有限,所以我想问一下这是否可能(在运行命令之前更改目录)在crontab的同一命令行上执行此操作,或者如果不能如何实现请?

当前的cronjob命令是

0 0,6,12,18 * * * /usr/bin/php /var/www/vhosts/clientname/stagingsite/rss/dorss.php

TIA 约翰

2 个答案:

答案 0 :(得分:8)

您可以将目录更改为您想要的目录,然后通过执行以下操作从该目录运行php:

cd /var/www/vhosts/clientname/stagingsite/rss/
&&
/usr/bin/php dorss.php

这比创建bash脚本更容易,结果如下:

0 0,6,12,18 * * * cd /var/www/vhosts/clientname/stagingsite/rss/ && /usr/bin/php dorss.php

答案 1 :(得分:3)

我不知道是否有更好的解决方案,但我建议在执行PHP文件之前编写一个更改为正确目录的bash脚本,并使用cron执行此脚本。 E.g:

#!/bin/bash
cd /Library/WebServer/Documents/clientname/siteroot/rss/
php dorss.php

甚至只是:

#!/bin/bash
php /Library/WebServer/Documents/clientname/siteroot/rss/dorss.php

将它保存在某处并使用cron来运行它。