如何从脚本中获取当前的 PHP 可执行文件?

php
2022-08-30 16:33:03

我想从PHP CLI中运行一个PHP CLI程序。在某些将运行此功能的计算机上,将同时安装 PHP 4 和 PHP 5。如果我将外部程序运行为

php5 outer.php

我希望内部脚本使用相同的PHP版本运行。在Perl中,我会用来获取Perl可执行文件。PHP中似乎没有这样的变量。$^X

现在,我正在使用 ,因为 Bash(和 zsh)将环境变量设置为上次运行的程序。但是,我宁愿不依赖特定于shell的成语。$_SERVER['_']$_

更新:版本差异只是一个问题。例如,如果 PHP 不在 PATH 中,或者不是 PATH 中的第一个版本,则查找版本信息的建议将无济于事。

此外,变体似乎没有为其进程设置环境变量,因此解决方法在那里不适用。csh$_

更新 2:我正在使用,直到我发现它没有做正确的事情(这是有道理的...... 将其设置为它运行的命令,该命令是 ,而不是 ,并且不更改变量)。我正在回退到使用:$_SERVER['_']xargszshxargsphp5xargs

$version = explode('.', phpversion());
$phpcli = "php{$version[0]}";

答案 1

值得注意的是,现在在 PHP 5.4+ 中,您可以使用预定义的常量PHP_BINARY

PHP_BINARY

指定脚本执行期间的 PHP 二进制路径。从 PHP 5.4 开始可用。


答案 2

在我的服务器上,我有PHP 5.3.14。

我发现了一个预定义的常量:PHP_BIN_DIR

然后,假设可执行文件的文件名始终为“php”,指向我的PHP可执行文件。$php_cmd = PHP_BIN_DIR.'/php'


推荐