【问题标题】:Running Cronjob from a specific directory从特定目录运行 Cronjob
【发布时间】:2013-07-12 13:33:21
【问题描述】:

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

TIA 约翰

【问题讨论】:

    标签: php cron plesk


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我不知道是否有更好的解决方案,但我建议在执行 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 运行它。

      【讨论】:

        猜你喜欢
        • 2019-01-05
        • 2013-04-17
        • 1970-01-01
        • 1970-01-01
        • 2018-10-07
        • 2020-07-12
        • 2016-01-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多