首页 文章

PHP包含在cron作业中

提问于
浏览
6

我正在尝试将PHP文件设置为cron作业,其中该PHP文件包含其他PHP文件 .

该文件本身位于/var/www/vhosts/domain.com/httpdocs/app/protected/classes/cron/runner.php

包含文件位于/var/www/vhosts/domain.com/httpdocs/app/protected/config.php

如何在runner.php中包含该配置文件?我尝试了require_once('../../ config.php'),但它说该文件不存在..我认为cron从不同的位置或其他地方运行PHP .

cron工作如下..

/ usr / bin / php -q /var/www/vhosts/domain.com/httpdocs/app/protected/classes/cron/runner.php

有什么想法吗?

4 回答

  • 2

    你的cron应该在运行PHP之前更改工作目录:

    cd /var/www/vhosts/domain.com/httpdocs/app/protected/classes/cron/ && /usr/bin/php -q runner.php
    

    请注意,如果该目录不存在,PHP将不会运行runner.php .

  • 15

    你应该使用绝对路径 . cron可能没有从它所在的目录中运行脚本 .

    我建议使用:

    require_once( dirname(__FILE__) '../../config.php )

    __FILE__ 是一个特殊常量,它指向您所在的文件 . dirname(...) 将为您提供目录,该目录将评估您希望包含的文件的绝对路径 .

  • 1

    类或cron是符号链接吗?我似乎记得php评估真实路径而不是符号路径 .

    考虑以下目录树:

    /target/index.php

    / path / sym - > / target

    如果您要从 /path/sym 执行 php index.php ,则语句 require_once('../require.php'); 将评估为 require_once('/require.php'); 而不是 require_once('/path/require.php');

  • 1

    您可以将PHP脚本中的工作目录更改为该脚本的位置: chdir(__DIR__); (或者,如果您的PHP版本在5.3之前: chdir(dirname(__FILE__)); )那么您可以执行以下操作: require_once('../../config.php')

相关问题