PHP via CLI抛出错误,但在浏览器中工作正常
当通过浏览器执行时,这个特定的PHP文件可以完美地工作。但是,我希望它在Windows中的任务调度器上运行,因此我将调度器设置为启动php.exe并将其指向正确的文件 任务调度器基本上是在做相同的事情,就像我直接在CLI中键入它一样。现在,它似乎已经工作了几次,但现在它反复失败,即使我通过CLI手动调用该任务 有关守则如下:PHP via CLI抛出错误,但在浏览器中工作正常,php,simple-html-dom,command-line-interface,Php,Simple Html Dom,Command Line Interface,当通过浏览器执行时,这个特定的PHP文件可以完美地工作。但是,我希望它在Windows中的任务调度器上运行,因此我将调度器设置为启动php.exe并将其指向正确的文件 任务调度器基本上是在做相同的事情,就像我直接在CLI中键入它一样。现在,它似乎已经工作了几次,但现在它反复失败,即使我通过CLI手动调用该任务 有关守则如下: include_once("simple_html_dom.php"); $results = ....Some CURL Commands to retrieve dat
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....
}
上面说
Fatal error: Call to a member function find() on a non-object in C:\php\report.php on line...
为什么CLI在这里发现错误,而浏览器却没有?同样,这在CLI上运行了一两次,因此可能是某种超时设置。在CLI上运行脚本时,是否检查了文件\u get\u html()是否返回FALSE 如果是这种情况,可能由于某种原因(例如:代理设置),脚本无法使用curl从终端访问资源 请确保使用以下内容检查您从该函数中获得的结果:
$html = str_get_html($results);
if ($html !== FALSE) {
// treat the success case.
}
你所有的答案都使我明白了问题所在。我调查了权限的角度,但没有解决问题。还有另一个我称为common_functions.php的“include”文件,我也包括了它。这方面的权限也没有解决问题 然而,旋度函数实际上位于公共_函数中。在调查该文件时,它包含对cookies.txt的引用,其中路径不是绝对路径。我没有正确设置我的环境变量,因此CLI无法找到导致Curl函数失败的cookie…我更正了,它现在可以工作了
吸取的教训。谢谢大家提供的线索。我感觉这可能是简单的\u htm\u dom.php文件的权限问题,可能它找不到包含的文件?可能curl命令失败,$html为空?你能输出$html吗?我不认为curl命令会失败,因为它会抛出一个关于curl的错误。如果curl失败了,为什么它只会通过CLI失败,而不会通过浏览器失败呢?在CLI上调试curl结果会更好,只是为了放弃这个问题。嗯。你是对的,旋度数据没有进来。不过我想我已经明白了