Как я могу получить двоичный путь php
из PHP?
Я видел это в phpinfo(), но мне нужен другой метод, который получает его в системах Linux и Windows.
Как я могу получить двоичный путь php
из PHP?
Я видел это в phpinfo(), но мне нужен другой метод, который получает его в системах Linux и Windows.
Ты можешь использовать:
$_SERVER['_']
Кроме того, предопределенная константа PHP_BINDIR
дает каталог, в котором находится исполняемый файл PHP.
Похоже, из соображений безопасности значения $_SERVER
не раскрываются.
Используйте команду which, чтобы найти php
.
$phpPath = exec("which php");
Обратите внимание, что это не гарантирует тот же исполняемый файл php
, который может использовать ваш веб-сервер, а скорее первый экземпляр, который был найден при просмотре путей.
exec
.
- person Hossein; 16.03.2013
Метод, использующий переменные среды, при условии, что исполняемый файл 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< /em> переменная — extension_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 из локальной среды разработки.
Начиная с PHP 5.4 вы можете просто использовать PHP_BINARY
зарезервированная константа.
Это очень легко!
var_dump(getenv('PHPBIN'));
Но это работает только в Windows, поэтому мы должны использовать этот ответ.
Как я это понял? Я просто набрал echo echo phpinfo();
и искал там путь php
. Просто посмотрите здесь:
Тогда я просто получаю это здесь: php getenv и... вы видите результат.
Для Windows и XAMPP:
$php = getenv('PHPRC') . '/php.exe';
if(is_file($expected)){
return $php;
}