全局变量在PHP CLI中不起作用

全局变量在PHP CLI中不起作用,php,Php,遇到这样一个问题:当我的代码与apache一起运行时,它工作正常,但当我通过CLI运行它时,它看不到这个变量$jobID。有什么想法吗 请不要教我不要使用全局变量 编辑: 这不起作用: $jobID = mysql_insert_id(); function someFunction() { global $jobID; echo $jobID; } 这是: $jobID = mysql_insert_id(); function someFunction($jobID

遇到这样一个问题:当我的代码与apache一起运行时,它工作正常,但当我通过CLI运行它时,它看不到这个变量$jobID。有什么想法吗

请不要教我不要使用全局变量

编辑:

这不起作用:

$jobID = mysql_insert_id();

function someFunction() {
     global $jobID;
     echo $jobID;
}
这是:

$jobID = mysql_insert_id();

function someFunction($jobID) {
     echo $jobID;
}
固定的 使用Register Globals:从PHP5.3.0开始,此功能已被弃用,并从PHP5.4.0开始删除。
不要使用全局参数,通过函数调用传递参数,因为[],例如: 更改:

致:


PHP将命令行参数存储在$argv数组中,而不是将参数扩展为普通变量。这个扩展是旧PHP版本经常使用的错误行为,所以不要使用它,而是使用$argv数组来访问参数

这可能是:

 $GLOBALS['jobID'] = 12; 

//Thats the way to initialize the var...and in the function:

function someFunction() {
  echo $GLOBALS['jobID'];
}

someFunction(); //testing

萨卢多斯;)

从代码片段本身就不可能判断出什么可能是错误的。不过,Globals在CLI和其他地方的行为是相同的。您的代码是做什么的?您认为它应该做什么?它在数据库中添加了一行,简单地说,当我调用这个函数时,$jobID已经设置好了,所以它应该可以看到它(对apache也是如此),但在CLI中它看不到它。php.ini中有选项吗?否决票是怎么回事?应该设置的变量的值在哪里?我没有看到任何向数据库添加行的语句。你的代码只定义了一个函数;它甚至不调用该函数。它不是一个真正的选项,我没有使用类,该函数还有10个参数,我不想将$jobID作为参数传递,原因有很多。它不是$argv数组,它是脚本中的一个变量delared,这很有效,你知道为什么global关键字在CLI中不起作用吗?不是很多……我从来没有在CLI上运行过php应用程序,但是global存在于任何作用域中,因为它是超全局的;)PHP本身没有全局变量。它具有全球范围。在任何函数或回调之外声明的变量都隐式保存在那里。当原始分配
$jobID=12时发生在任何函数/方法中,然后它存在于局部范围内(除非使用了
全局
关键字)。这就是OP发生的事,但他不愿透露。
function someFunction($arg1) {
     echo $arg1;
}
$anyvar = 'some value';
someFunction($anyvar);
 $GLOBALS['jobID'] = 12; 

//Thats the way to initialize the var...and in the function:

function someFunction() {
  echo $GLOBALS['jobID'];
}

someFunction(); //testing