4

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

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

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

与在 Chrome 中导航到 dorss.php 文件一样工作正常。

尽管 CronJob 已执行,但出现了与它无法找到使用 require_once() 指定的文件有关的错误,这些文件与 rss 位于同一文件夹或该文件夹的子文件夹中。

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

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

当前的 cronjob 命令是

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

蒂亚约翰

4

2 回答 2

15

您可以将目录更改为您想要的目录,然后通过执行以下操作从该目录运行 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
于 2015-08-13T18:14:50.650 回答
5

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

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

甚至只是:

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

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

于 2013-07-12T13:37:10.860 回答