Как получить путь PHP BIN из PHP? - PullRequest
17 голосов
/ 08 октября 2010

Как я могу получить путь к бину php из PHP?Я видел это в phpinfo ();но мне нужен другой метод, который получает его в системах Linux и Windows.

Ответы [ 8 ]

20 голосов
/ 08 октября 2010

Вы можете использовать:

$_SERVER['_']

Также, предопределенная константа PHP_BINDIR дает каталог, в котором находится исполняемый файл php.

Образец на Кодовая панель и ideone .

По соображениям безопасности значения $_SERVER не отображаются. (Наверное. Пожалуйста, поправьте меня, если я ошибаюсь).

15 голосов
/ 03 мая 2011

Только для Linux Используйте команду "which", чтобы найти php.

$phpPath = exec("which php");

Обратите внимание, что это не гарантирует тот же исполняемый файл php, который может использовать ваш веб-сервер, а скорее первый экземпляр, который был найден при просмотре путей.

9 голосов
/ 08 октября 2010

Метод, использующий переменные окружения, при условии, что исполняемый файл 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
}
6 голосов
/ 17 июня 2014

Возможно, лучшее решение - это компонент процесса Symfony: https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Process/PhpExecutableFinder.php и https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Process/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;
4 голосов
/ 29 июня 2016

В Windows, используя wamp, вы можете использовать переменную ini - extension_dir - так как она находится в папке php.

, например:

echo str_replace('ext/', 'php.exe', ini_get('extension_dir'));
2 голосов
/ 15 марта 2016

Обычно в простой установке PHP по умолчанию под Windows файл php.ini располагается и загружается из того же каталога двоичного файла PHP.

Для упрощения, пользователи Windows:

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

voilà!

Конечно, если вы используете несколько INI-файлов, они могут не работать, если файлы не находятся в одном двоичном каталоге PHP.Кстати, это может решить в большинстве случаев.Разработчики Windows используют PHP из локальной среды разработки.

0 голосов
/ 16 февраля 2018

Windows, XAMPP

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

if(is_file($expected)){
   return $php;
}
0 голосов
/ 25 марта 2017

Это очень просто!

var_dump(getenv('PHPBIN'));

Но это работает только в Windows, поэтому мы должны использовать этот ответ - https://stackoverflow.com/a/3889630/2574125

Как я это получил?Я просто набрал echo echo phpinfo(); и искал там путь php.Джус, смотрите здесь: how i found php path

тогда я просто получаю здесь: php getenv и ... вы видите результат.Используйте это, ребята.

...