从特定目录运行Cronjob

Joh*_*gan 1 php cron plesk

我创建了一个用于生成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约翰

Ant*_*ida 7

您可以将目录更改为您想要的目录,然后通过执行以下操作从该目录运行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)


Sha*_*ood 5

不知道有没有更好的解决方案,但是我建议先写一个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 来运行它。