我的PHP脚本中有一个代码片段,它使用API调用获取用户ID的某些属性

我的PHP脚本中有一个代码片段,它使用API调用获取用户ID的某些属性,php,Php,我的PHP脚本中有一个代码片段,它使用API调用获取用户ID的某些属性 某些用户标识没有特定字段。就像每个用户可能都没有所有者一样。因此,该字段不会返回任何内容,当我在浏览器中运行脚本时,会得到以下结果: 注意:尝试获取非对象的属性 这对我来说很好,因为代码仍在进一步执行 当我通过cron运行同一个脚本时,会出现致命错误,脚本的执行将停止。我如何才能完全按照脚本在浏览器中的运行方式运行脚本,从而避免出现致命错误 解决了的 这对我来说很有用: cd/home/##################

我的PHP脚本中有一个代码片段,它使用API调用获取用户ID的某些属性

某些用户标识没有特定字段。就像每个用户可能都没有所有者一样。因此,该字段不会返回任何内容,当我在浏览器中运行脚本时,会得到以下结果:

注意:尝试获取非对象的属性

这对我来说很好,因为代码仍在进一步执行

当我通过cron运行同一个脚本时,会出现致命错误,脚本的执行将停止。我如何才能完全按照脚本在浏览器中的运行方式运行脚本,从而避免出现致命错误


解决了的 这对我来说很有用:

cd/home/###################/#/usr/local/bin/php-c-f file.php

“cd/home/##############/#”将目录更改为我的“file.php”所在的位置。有人能告诉我为什么上面的命令有效,而下面的命令无效:
cd/home/###################/#/usr/local/bin/php file.php

解决方案1,如果可以更改脚本:

您可以检查以确保在填充变量之前已设置该变量。例如:

$name = "";
if (isset($var['name'])) {
    $name = $var['name'];
}
这是最好的例子,我可以给没有代码样本。。。您可能还可以通过@error suppression解决问题,但我不确定它在var赋值方面的效果如何

更新:

@error suppression在mac上的快速cli测试中起作用:

@$name = $var['name'];
@符号告诉解释器抑制该行上的错误并继续。虽然这是可行的,但第一个示例更干净


解决方案2,如果无法更新脚本:


更改cron以通过curl/wget运行脚本。将脚本放在一个可以通过服务器调用的位置(即使是仅内部vhost),然后通过curl/wget调用它。另一个解释器将与CLI相反使用。

您的代码是否可以在尝试使用对象之前检查对象是否为null?我将无法在脚本中进行更改。我在cpanel中运行cron,更关心的是为什么它在浏览器中工作,而不是在我通过设置cron来运行它的时候。cron将使用cli,这可能与web服务器使用的解释器不同。在cli中得到的错误消息是什么?这将涉及更多的开销,但如果您确实必须这样做,您可以让cron对PHP页面的URL进行wget调用。