我想从PHP cli中运行PHP cli程序.在一些运行它的机器上,安装了php4和php5.如果我运行外部程序为
php5 outer.php
Run Code Online (Sandbox Code Playgroud)
我希望内部脚本使用相同的php版本运行.在Perl中,我将使用$^Xperl可执行文件.看来PHP中没有这样的变量?
现在,我正在使用$_SERVER['_'],因为bash(和zsh)将环境变量$_设置为最后运行的程序.但是,我宁愿不依赖于特定于shell的习语.
更新:版本差异只是一个问题.例如,如果PHP不在PATH中,或者不是PATH中找到的第一个版本,则查找版本信息的建议将无济于事.
此外,csh变体似乎没有$_为其进程设置环境变量,因此解决方法在那里不适用.
更新2:我正在使用$_SERVER['_'],直到我发现它没有做正确的事情xargs(这是有道理的...... zsh将它设置为它运行的命令,这xargs不是php5,并且xargs不会更改变量).回归使用:
$version = explode('.', phpversion());
$phpcli = "php{$version[0]}";
Run Code Online (Sandbox Code Playgroud) 从PHP程序内部我想知道执行它的二进制文件的位置.Perl就是$^X为了这个目的.PHP中是否有相同的东西?
这样它可以使用自己执行子PHP进程(而不是硬编码路径或假设"php"是正确的).
UPDATE
我尝试过但不起作用的事情:
$_SERVER['_']看起来像我想要的命令行,但它实际上来自上一个执行程序的shell设置的环境变量.从Web服务器运行时,这是Web服务器二进制文件.which php将无法正常工作,因为不保证PHP二进制文件与Web服务器中的二进制文件相同PATH.提前致谢.