首页 > 解决方案 > PHP argv 丢失导致脚本无法运行

问题描述

我从 bash 调用 PHP 脚本,偶尔我会提供 2 个或有时 3 个参数,就像这样

bash 脚本

 ip =  192.168.1.4
 name = machine2
 callScript=`/usr/bin/php check.php $ip $name`
 callScript2=`/usr/bin/php check.php $name`

如您所见,有一次我用两个参数调用 PHP 脚本,而在另一种情况下,我用一个参数调用 PHP 脚本。问题从第二个开始,因为 PHP 有 argv[1] 和 argv[2] 然后 PHP 抱怨说PHP Notice: Undefined offset: 2因为没有传递第二个参数

这是我的 PHP 脚本

$placeholder = NULL;
if ($argv[2] === NULL) {
   //Do nothing
} else {
   $placeholder = $argv[2];
}

我这样做是为了如果传递了第二个参数,则将其存储在占位符中,但如果没有,则不执行任何操作。问题是 PHP 在我的代码的第二行停止,因为 $argv[2] 不存在,因为我有时只提供一个参数。

标签: phpbashargv

解决方案


检查它是否已设置而不是 null。

$placeholder = (isset($argv[2]) ? $argv[2] : null);

推荐阅读