我创建了一个用于生成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 约翰
答案 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来运行它。