如何php
从 PHP 获取二进制路径?
我在phpinfo()中看到了它,但我需要另一种在 Linux 和 Windows 系统中获取它的方法。
使用“which”命令查找php
.
$phpPath = exec("which php");
请注意,这并不能保证php
您的 Web 服务器可能正在使用相同的可执行文件,而是保证在查看路径时找到的第一个实例。
一种使用环境变量的方法,假设php
可执行文件在系统路径中。
function getPHPExecutableFromPath() {
$paths = explode(PATH_SEPARATOR, getenv('PATH'));
foreach ($paths as $path) {
// We need this for XAMPP (Windows)
if (strstr($path, 'php.exe') && isset($_SERVER["WINDIR"]) && file_exists($path) && is_file($path)) {
return $path;
}
else {
$php_executable = $path . DIRECTORY_SEPARATOR . "php" . (isset($_SERVER["WINDIR"]) ? ".exe" : "");
if (file_exists($php_executable) && is_file($php_executable)) {
return $php_executable;
}
}
}
return FALSE; // Not found
}
也许最好的解决方案是在Symfony进程组件中:
PhpExecutableFinder.php和ExecutableFinder.php。正在使用:
<?php
use Symfony\Component\Process\PhpExecutableFinder;
$phpFinder = new PhpExecutableFinder;
if (!$phpPath = $phpFinder->find()) {
throw new \Exception('The php executable could not be found, add it to your PATH environment variable and try again');
}
return $phpPath;
在 Windows 中,使用WAMP,您可以使用ini变量 - extension_dir - 因为它位于 PHP 文件夹中。
像这样:
echo str_replace('ext/', 'php.exe', ini_get('extension_dir'));
通常,在 Windows 下的简单默认 PHP 安装中,php.ini文件位于 PHP 二进制文件的同一目录并从其加载。
为简化起见,Windows 用户:
echo dirname(php_ini_loaded_file()).DIRECTORY_SEPARATOR.'php.exe';
瞧!
当然,如果您使用多个.ini文件,如果文件不在同一个 PHP 二进制目录中,则可能无法正常工作。顺便说一句,这可以解决大多数情况。从本地开发环境运行 PHP 的 Windows 开发人员。
从 PHP 5.4 开始,您可以简单地使用PHP_BINARY
保留常量。
这很容易!
var_dump(getenv('PHPBIN'));
但它只适用于 Windows,所以我们应该使用这个答案。
我是怎么得到这个的?我只是输入了 echoecho phpinfo();
并在那里搜索了php
路径。看看这里:
然后我在这里得到它:php getenv和......你看到了结果。
对于 Windows 和XAMPP:
$php = getenv('PHPRC') . '/php.exe';
if(is_file($expected)){
return $php;
}