PHP:如何获取内部参数?

时间:2013-03-21 21:44:12

标签: php command-line-arguments

给出命令:

/usr/bin/php -c /path/to/custom/php.ini /path/to/script.php

我想获得内部选项:

-c /path/to/custom/php.ini

我尝试过的东西不起作用:

  • $argv 包含['/path/to/script.php']
  • getopt('c') 包含[]
  • $_ENV 不包含
  • $_SERVER 不包含

我还查找了PHP_*常量(例如PHP_BINARY但找不到这些参数。

有没有办法获得这些论点?请注意,我不是要尝试获取已加载的ini文件,而是获取此处可能存在的任何参数。

4 个答案:

答案 0 :(得分:3)

PHP没有内部方法,因此您将不得不依赖某些系统信息和权限。

$pid = getmypid();
$ps = `ps aux | grep $pid`;
$command = substr($ps, strpos($ps, '/usr/bin/php'));
$args = explode(' ', $command); //not pretty, should probably use preg

答案 1 :(得分:2)

-c /path/to/custom/php.ini是在启动脚本之前传递给PHP解析器,解释器和其他内部函数的选项。

/path/to/script.php是一个实际参数,不仅传递给PHP可执行文件,还传递给您的脚本。

以下/usr/bin/php -c /path/to/custom/php.ini /path/to/script.php A B C之类的参数也会传递给您的脚本。

不幸的是,-c选项不是其中之一。

您可以使用php.ini在已执行的PHP脚本中获取已使用的get_cfg_var文件。

echo get_cfg_var('cfg_file_path');

如果您传递-c选项,您将获得php.ini文件的路径。否则你会得到默认的php.ini文件。

答案 2 :(得分:0)

不幸的是,由于如何解析命令行BASH参数,您将无法在脚本调用之前访问参数。目前,该计划/usr/bin/php

argv[0]=/usr/bin/php
argv[1]=-c
argv[2]=/path/to/custom/php.ini
argv[3]=/path/to/script.php

这就是你的论点降落的地方。另一方面,你的脚本有:

argv[0]=/path/to/script.php

因为参数是从右到左处理的,所以在脚本调用之后没有参数。

答案 3 :(得分:0)

我使用如下内容,因为它不需要任何解析。

$ (ARGS="-c /path/to/custom/php.ini"; /usr/bin/php $ARGS /path/to/script.php $ARGS)