【发布时间】:2019-05-09 06:46:52
【问题描述】:
Crontab 不执行我的 php 文件。
我的“crontab -e”设置如下
*/1 * * * * /usr/bin/php /var/www/html/books_loader/cron_jobs/CronBooksLoader.php
如您所见,我希望它每分钟运行一次。 我的 php 文件夹是“/usr/bin/php”。我的“CronBooksLoader.php”位于正确的目录中,并且拥有所有必要的权限(甚至是 777)。
“CronBooksLoader.php”包含此代码
<?php
namespace BooksLoader\Base;
require '../vendor/autoload.php';
$bookObj = new Books();
$loadFiles = $bookObj->load('../xmlData');
$result = $bookObj->upsert();
当我在浏览器中启动时 (http://127.0.0.1/books_loader/cron_jobs/CronBooksLoader.php) 成功地从该目录中的 XML 文件加载了我的数据。
我不能 100% 确定该文件是否未执行,或者只是该 cron 不知道该做什么。
*******更新*******
在下面所有的 cmets 之后。 Cron 运行并创建日志。 我收到错误
PHP Warning: require(../vendor/autoload.php): failed to open stream: No such file or directory in /var/www/html/books_loader/cron_jobs/CronBooksLoader.php on line 4
PHP Fatal error: require(): Failed opening required '../vendor/autoload.php' (include_path='.:/usr/share/php') in /var/www/html/books_loader/cron_jobs/CronBooksLoader.php on line 4
但我不知道如何给出正确的路径。我希望它留下来 相对的。
【问题讨论】:
-
首先,将权限设置为 777 对于 php 文件来说绝不是一个好主意。使用 755 应该足够了
-
我知道@SvenHakvoort 那时我很绝望......
-
好吧 :) 只是为了确保 xD 你可以尝试在你的 crontab 中的 php 命令之后使用
>> /var/log/cron.log 2>&1记录结果吗?所以:*/1 * * * * /usr/bin/php /var/www/html/books_loader/cron_jobs/CronBooksLoader.php >> /var/log/cron.log 2>&1 -
检查错误日志
-
请记住,当在文件路径中使用点时,它会从脚本运行的路径转换它,而不是脚本所在的位置。要么将要求更改为绝对路径,要么将 cd 添加到您的 crontab 到脚本目录。