请帮助调试挂起且没有错误的PHP脚本

时间:2012-09-26 19:16:39

标签: php magento

我在大约一年前为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没有去过任何地方!

所以...我真的不确定现在要去哪里调试这个问题。任何建议都很受欢迎!

4 个答案:

答案 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