PHP:如何获取内部参数?
发出命令:PHP:如何获取内部参数?,php,command-line-arguments,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')包含[] $\u ENV不包含它 $\u服务器不包含它 我还查找了PHP.*常量(例如PHP.\u BINARY),但找不到这些参数的常量 有没有办法得到这些论点?请注意,我
/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')
[]
不包含它$\u ENV
不包含它$\u服务器
PHP.*
常量(例如PHP.\u BINARY
),但找不到这些参数的常量
有没有办法得到这些论点?请注意,我不是试图获取加载的
ini
文件,而是获取此处可能存在的任何参数。-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)也将传递给脚本
不幸的是,-c
选项不是其中之一
您可以通过使用get\u cfg\u var
在执行的php脚本中获取已使用的php.ini
文件
echo get_cfg_var('cfg_file_path');
如果您正在传递-c
选项,您将获得php.ini文件的路径。否则您将获得默认的php.ini文件。不幸的是,由于命令行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
因为参数是从右到左处理的,并且在脚本调用之后没有参数。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
我将使用以下内容,因为它不需要任何解析
$(ARGS=“-c/path/to/custom/php.ini”;/usr/bin/php$ARGS/path/to/script.php$ARGS)
建议将var\u export($\u SERVER)作为第一个调用端口,而且,这不是脚本参数,因此我怀疑您是否会看到它,我似乎记得您只会看到脚本后面的任何参数。另外,您是否仅尝试获取自定义INI?或者任何传递给php的参数?如果只需要ini,请查看echo shell_exec('ps-p'.getmypid().-o args=')
除非将-H
作为php参数传递,否则它将执行。也不需要。对于特定的pid,您可以将-p pid
传递到ps
,无需进行灰显。ps aux | grep pid | grep-v grep | awk'{for(i=11;iSome其他脚本可能会在命令行上调用它。外部脚本不太可能将选项作为参数传递。@HaralanDobrev,是的,它应该在受控环境中使用