在从命令行运行PHP之前设置$ _SESSION全局变量

时间:2012-06-19 21:22:31

标签: php command-line

我尝试从命令行输出我的.php文件,我希望能够为此输出模拟$_SESSION值。

我尝试了php test.php --define $_SESSION["id"]=1,但没有设置全局变量$_SESSION

我显然没有正确使用命令行,但我找不到应该怎么做。

是否有任何想法让它发挥作用?

非常感谢

编辑:对于我的例子,test.php如下:

<? echo $_SESSION['id'];?>

2 个答案:

答案 0 :(得分:1)

$ cat setsession.php 
<?php
//fixed session:
session_id("fixed");
session_start();
?>
$ cat checksession.php 
<?php
if(!isset($_SESSION['counter'])) $_SESSION['counter'] = 0;

$_SESSION['counter']++;

var_dump($_SESSION);
$ php -d auto_prepend_file=setsession.php checksession.php 
array(1) {
  ["counter"]=>
  int(1)
}
$ php -d auto_prepend_file=setsession.php checksession.php 
array(1) {
  ["counter"]=>
  int(2)
}
$ php -d auto_prepend_file=setsession.php checksession.php 
array(1) {
  ["counter"]=>
  int(3)
}

答案 1 :(得分:0)

您不能以任何有意义的方式在命令行上使用会话 - 会话标识符存储在cookie中。命令行不执行cookie,因此正常的会话方式不起作用。当然,您可以在脚本运行期间使用$_SESSION超全局。只是不要指望它在同一个脚本的不同调用之间持续存在。