Как получить путь к php BIN из PHP?
Как я могу получить путь bin php из PHP? Я видел это в phpinfo (); но мне нужен другой метод, который получает его в системах linux и windows.
8 ответов
вы можете использовать:
$_SERVER['_']
и предопределенная константа PHP_BINDIR
дает каталог, в котором находится исполняемый файл php.
похоже, по соображениям безопасности, $_SERVER
значения не отображаются. (Я думаю. Пожалуйста, поправьте меня, если я ошибаюсь).
Только Linux используйте команду "which", чтобы найти 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 и 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;
в windows, используя wamp, вы можете использовать переменную ini-extension_dir-как она размещена в папке php.
такой:
echo str_replace('ext/', 'php.exe', ini_get('extension_dir'));
обычно, в простой установке PHP по умолчанию под Windows, php.ini-файл находится и загружается из того же каталога PHP binary.
чтобы упростить, пользователи 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 echo phpinfo();
и искал там путь php. Juse смотрите здесь:
тогда я просто получить здесь: php getenv и ... вы видите результат. Используйте его, ребята.