我创建了一个用于生成RSS源的php脚本,最终通过Cronjob运行.
所有php文件和生成的RSS xml都将位于网站的子文件夹中.如果我在本地开发机器上的同一目录中使用终端或浏览器,那么php脚本在我的本地dev上运行正常.
e.g. php /Library/WebServer/Documents/clientname/siteroot/rss/dorss.php
Run Code Online (Sandbox Code Playgroud)
与导航到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
Run Code Online (Sandbox Code Playgroud)
TIA约翰
您可以将目录更改为您想要的目录,然后通过执行以下操作从该目录运行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
Run Code Online (Sandbox Code Playgroud)
不知道有没有更好的解决方案,但是我建议先写一个bash脚本,在执行PHP文件之前改到正确的目录,然后用cron来执行这个脚本。例如:
#!/bin/bash
cd /Library/WebServer/Documents/clientname/siteroot/rss/
php dorss.php
Run Code Online (Sandbox Code Playgroud)
或者甚至只是:
#!/bin/bash
php /Library/WebServer/Documents/clientname/siteroot/rss/dorss.php
Run Code Online (Sandbox Code Playgroud)
将它保存在某个地方并使用 cron 来运行它。