当 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 )