我有此代码:
echo "1 - is_readable: " . is_readable("/mnt/persist/www/docroot/wp-load.php") . "\r\n";
echo "2 - file_exists: " . file_exists("/mnt/persist/www/docroot/wp-load.php") . "\r\n";
echo "3 - before require\r\n";
require("/mnt/persist/www/docroot/wp-load.php");
echo "4 - after require\r\n";
但是输出很奇怪:
1 - is_readable: 1
2 - file_exists: 1
3 - before require
当我从CLI或CRON启动脚本时,会出现这种情况 直接在浏览器中启动它-一切都很好。
回声4没有显示是什么情况? 我也尝试过要求另一个文件,结果是一样的。
upd。 crontab中的任务:
*/1 * * * * root php -f /somepath/fetch_data.php >> /somepath/results.out.log 2>&1
答案 0 :(得分:0)
如果您查看wp-load.php
文件。它有下面的行
error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR );
这基本上会禁用所需的所有错误报告。因此,编辑文件并对其进行注释并添加
error_reporting(E_ALL);
然后您将知道问题所在。同样,并非所有的php文件都与CLI兼容,因为它们使用的某些代码仅在网络环境下运行时才有效。
因此,如果您无法在CLI中修复错误,则可以运行curl调用进行迁移
*/1 * * * * root curl http://localhost/path/to/url
问题在于您将不会获得日志,而只会获得脚本提供的输出。同样,如果您的脚本运行时间过长,则需要添加set_time_limit(0)
答案 1 :(得分:0)
该脚本可能已包含在内,并且在第二个包含中产生了错误。尝试使用require_once()
。
https://www.php.net/manual/en/function.require.php
https://www.php.net/manual/en/function.require-once.php