Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP via CLI抛出错误,但在浏览器中工作正常_Php_Simple Html Dom_Command Line Interface - Fatal编程技术网

PHP via 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

当通过浏览器执行时,这个特定的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....
}
上面说

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结果会更好,只是为了放弃这个问题。嗯。你是对的,旋度数据没有进来。不过我想我已经明白了