我在大约一年前为Magento创建了一个产品导入脚本,并且从那时起它已经成功运行,下载了几个包含产品目录,库存数量和停产产品列表的XML文件,以及与每个产品相关的图像文件。
本周突然剧本不再运行完成。它似乎突然结束,但屏幕上或包含脚本的目录中服务器的error.log文件中没有显示错误消息。
我在脚本的头部有以下内容,所以如果它们确实发生,我应该会看到错误:
error_reporting(E_ERROR | E_WARNING | E_PARSE);
ini_set('display_errors', 'On');
我唯一看到的可能是相关的,但我不相信,因为当我从浏览器运行脚本时我根本看不到它 - 只有当脚本从crontab运行时才会出现( php ... / public_html / import / ss365products.php> / dev / null 2>& 1),是error.log文件中的以下内容:
[26-Sep-2012 12:00:01] PHP Warning: require_once(/app/Mage.php) [<a href='function.require-once'>function.require-once</a>]: failed to open stream: No such file or directory in .../public_html/import/TempProducts.php on line 5
我真的不确定为什么我的Mage.php没有去过任何地方!
所以...我真的不确定现在要去哪里调试这个问题。任何建议都很受欢迎!
答案 0 :(得分:1)
对于cron,只需提供Mage.php的完整文件夹路径,您的脚本就可以运行了。在apache上运行时,/app
是相对于webroot文件夹的,但是当它作为cron运行时,它将尝试查找相对于文件系统的文件夹。
答案 1 :(得分:0)
[26-Sep-2012 12:00:01] PHP Warning: require_once(/app/Mage.php)
这看起来不像是相对路径。也许它正在根目录中寻找Mage.php?
试试这个: require_once“/full/path/to/app/Mage.php”
答案 2 :(得分:0)
使用require_once(__DIR__ . '/app/Mage.php');
答案 3 :(得分:0)
在命令行中没有$ _SERVER ['DOCUMENT_ROOT'],因此它将在错误的路径中搜索Mage.php。由于某些可能未应用的php.ini设置(即设置了时间限制),脚本可能会中止。
也许您应该使用以下方式将cron作业作为网页访问:
wget http://yourdomain/cron.php