这个特定的PHP文件在通过浏览器执行时非常有效。但是,我希望它能在Windows上的任务调度程序上运行,因此我将调度程序设置为启动php.exe并将其指向正确的文件。
任务调度程序基本上做同样的事情,就像我直接在CLI中输入我认为的那样。现在,它似乎已经工作了几次,但现在它反复失败,即使我通过CLI手动调用任务。
相关代码是:
include_once("simple_html_dom.php");
$results = ....Some CURL Commands to retrieve data....
$html = str_get_html($results);
foreach($html->find('tr') as $tr)
{
....do stuff....
}
在CLI中,它说
Fatal error: Call to a member function find() on a non-object in C:\php\report.php on line...
为什么CLI在这里发现错误而浏览器没有?同样,这在CLI上工作了一两次,因此它可能会有某种超时设置。
答案 0 :(得分:0)
在CLI上运行脚本时,是否检查了file_get_html()是否返回FALSE?
如果是这种情况,可能由于某种原因,脚本无法使用curl从终端到达资源(例如:代理设置)。
请务必使用以下内容检查您从该函数获得的内容:
$html = str_get_html($results);
if ($html !== FALSE) {
// treat the success case.
}
答案 1 :(得分:0)
你的所有答案都让我弄明白了这个问题。我调查了权限角度,但没有解决它。我还有另一个名为common_functions.php的'include'文件。对此的权限也没有解决问题。
但是,curl函数实际上位于common_functions中。在调查该文件时,它包含对cookies.txt的引用,其中路径不是绝对的。我没有正确设置我的环境变量,因此CLI找不到使Curl函数失败的cookie .....我纠正了它现在有效。
经验教训。谢谢大家提供的线索。