Как получить путь BIN PHP из PHP?
Вопрос
Как я могу получить путь BIN PHP от PHP? Я видел это в phpinfo (); Но мне нужен другой метод, который получает его в системах Linux и Windows.
Решение
Ты можешь использовать:
$_SERVER['_']
Также, предопределенная константа PHP_BINDIR
Дает каталог, где найден исполняемый файл PHP.
Образец дальше Кодепад и Идеон.
Похоже, по соображениям безопасности, $_SERVER
Значения не выставлены. (Я думаю, пожалуйста, поправьте меня, если я ошибаюсь).
Другие советы
Только Linux Используйте команду «Какой« », чтобы найти PHP.
$phpPath = exec("which php");
Примечание. Это не гарантирует тот же исполняемый файл PHP, который может использоваться ваш веб-сервер, а скорее первый экземпляр, который был найден при просмотре пути.
Способ с использованием переменных среды, предполагая исполняемый файл 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: https://github.com/symfony/symfony/blob/master/src/symfony/component/process/phpexecutablefinder.php.php. и https://github.com/symfony/symfony/blob/master/src/symfony/component/process/executabillfinder.php.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 - Extaction_DIR - как он находится в папке PHP.
как это:
echo str_replace('ext/', 'php.exe', ini_get('extension_dir'));
Обычно в простой установке PHP по умолчанию под Windows файл php.ini находится и загружен из того же каталога двоичного данных PHP.
Чтобы упростить, пользователи Windows:
echo dirname(php_ini_loaded_file()).DIRECTORY_SEPARATOR.'php.exe';
Вуаля!
Конечно, если вы используете несколько файлов INI, не могут работать, если файлы не находятся в том же двоичном каталоге PHP. Кстати, это может решить в большинстве случаев. Разработчики Windows работают PHP от локальной среды развития.
Это очень легко!
var_dump(getenv('PHPBIN'));
Но это работает только в Windows, поэтому мы должны использовать этот Ansver - https://stackoverflow.com/a/3889630/2574125.
Как я получил это? Я только что набрал эхо echo phpinfo();
и искал там PHP путь. Джьюс Посмотрите здесь:
Тогда я просто получаю здесь: PHP GETENV и ... вы видите результат. Используйте это, люди.
Windows, Xampp.
$php = getenv('PHPRC') . '/php.exe';
if(is_file($expected)){
return $php;
}