23

如何php从 PHP 获取二进制路径?

我在phpinfo()中看到了它,但我需要另一种在 Linux 和 Windows 系统中获取它的方法。

4

9 回答 9

21

您可以使用:

$_SERVER['_']

此外,预定义的常量PHP_BINDIR给出了 PHP 可执行文件所在的目录。

CodePadIdeone上的示例。

出于安全原因,看起来$_SERVER没有公开值。

于 2010-10-08T10:11:21.680 回答
18

仅限 Linux

使用“which”命令查找php.

$phpPath = exec("which php");

请注意,这并不能保证php您的 Web 服务器可能正在使用相同的可执行文件,而是保证在查看路径时找到的第一个实例。

于 2011-05-02T22:29:52.180 回答
11

一种使用环境变量的方法,假设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
}
于 2010-10-08T10:22:33.017 回答
9

也许最好的解决方案是在Symfony进程组件中:

PhpExecutableFinder.phpExecutableFinder.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;
于 2014-06-17T15:25:34.313 回答
4

在 Windows 中,使用WAMP,您可以使用ini变量 - extension_dir - 因为它位于 PHP 文件夹中。

像这样:

echo str_replace('ext/', 'php.exe', ini_get('extension_dir'));
于 2016-06-29T15:22:15.083 回答
3

通常,在 Windows 下的简单默认 PHP 安装中,php.ini文件位于 PHP 二进制文件的同一目录并从其加载。

为简化起见,Windows 用户:

echo dirname(php_ini_loaded_file()).DIRECTORY_SEPARATOR.'php.exe';

瞧!

当然,如果您使用多个.ini文件,如果文件不在同一个 PHP 二进制目录中,则可能无法正常工作。顺便说一句,这可以解决大多数情况。从本地开发环境运行 PHP 的 Windows 开发人员。

于 2016-03-15T11:37:49.060 回答
1

从 PHP 5.4 开始,您可以简单地使用PHP_BINARY保留常量。

于 2020-01-05T12:58:24.020 回答
0

这很容易!

var_dump(getenv('PHPBIN'));

但它只适用于 Windows,所以我们应该使用这个答案

我是怎么得到这个的?我只是输入了 echoecho phpinfo();并在那里搜索了php路径。看看这里:

我是如何找到 PHP 路径的

然后我在这里得到它:php getenv和......你看到了结果。

于 2017-03-25T11:37:14.757 回答
0

对于 Windows 和XAMPP

$php = getenv('PHPRC') . '/php.exe';

if(is_file($expected)){
   return $php;
}
于 2018-02-16T06:01:43.857 回答