0

我有一个脚本,我们称它为 mainfile.php,其中包含同一目录中的文件。我将其包括如下:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

require_once './myincludefile.php';
?>

如果我执行以下操作:

nohup php mainfile.php >/dev/null

它运行没有任何问题。但是,如果将其转换为 cron 作业,我会收到以下消息(在我的邮件假脱机中):

PHP Warning:  require_once(./myincludefile.php): failed to open stream: No such file or directory in /home/code/mainfile.php on line 5
PHP Fatal error:  require_once(): Failed opening required './myincludefile.php' (include_path='.:/usr/share/pear:/usr/share/php') in/home/code/mainfile.php on line 5

有任何想法吗?

4

2 回答 2

2

那是因为通过 cron 调用时脚本的当前工作目录不一样。(我假设它是/,根目录)

更改require_once为:

require_once __DIR__ . '/myincludefile.php';

__DIR__将始终包含当前脚本所在的目录 - 而不是当前工作目录。这就是为什么构建相对路径很方便的原因。

于 2013-06-04T08:37:27.353 回答
0

请将路径更改为绝对路径require_once './myincludefile.php';

并运行此命令

nohup php-q mainfile.php >/dev/null
于 2013-06-04T08:41:07.230 回答