php 中的路径代码在 cron 中的工作方式是否相同?

php 中的路径代码在 cron 中的工作方式是否相同?

当 php 脚本从 crontab 运行时,包含文件路径(与 php 脚本位于同一位置的子文件夹中)的 php 代码是否仍然有效?

我的 php 代码从“ref_files”子文件夹中读取文本文件。从我的 PC 浏览器执行 php 时 100% 有效:

$SettingsFile = "./ref_files/push1.txt";
$extData = fopen($SettingsFile, "r");
    while ($line = fgets($extData, 2048)){ //reads the file line by line
        echo $line . "<br>";
    }
fclose($extData);

当脚本从 crontab 运行时(我相信它是从不同的位置执行的),这个会中断吗?

Raspberry Pi 3 Model B Plus Rev 1.3 Arm v7 OMV 4.1.35.1 Debian 9 Stretch PHP 7.0.33 Nginx 1.10.3

编辑:看起来以下是一个解决方案:

$CodeRoot = dirname(__FILE__);

$SettingsFile = "$CodeRoot/ref_files/push1.txt";
$extData = fopen($SettingsFile, "r");
    while ($line = fgets($extData, 2048)){ //reads the file line by line
        echo $line . "<br>";
    }
fclose($extData);

答案1

您的 cron 作业必须cd首先到达正确的目录。

例如,将类似的内容作为条目的“命令”部分crontab

( cd /path/to/php/script/directory ; php myscript.php )

相关内容