PHPからPHPのビンパスを取得するにはどうすればよいですか? phpinfo()で見ました。 LinuxとWindowsシステムでそれを取得する別の方法が必要です。
以下を使用できます。
$_SERVER['_']
また、 事前定義された定数PHP_BINDIR
は、php実行可能ファイルが見つかったディレクトリを示します。
セキュリティ上の理由から、$_SERVER
値は公開されません。 (私は推測します。私が間違っている場合は修正してください)。
Linuxのみ "which"コマンドを使用してphpを検索します。
$phpPath = exec("which php");
これは、Webサーバーが使用している可能性のある同じ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 and 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を使用して、phpフォルダーに配置されているini変数-extension_dir-を使用できます。
このような:
echo str_replace('ext/', 'php.exe', ini_get('extension_dir'));
通常、Windowsでの単純なデフォルトのPHPインストールでは、php.iniファイルがPHPバイナリの同じディレクトリから検索されて読み込まれます。
簡単にするために、Windowsユーザー:
echo dirname(php_ini_loaded_file()).DIRECTORY_SEPARATOR.'php.exe';
ほら!
もちろん、複数のiniファイルを使用している場合、ファイルが同じPHPバイナリディレクトリにない場合、動作しない可能性があります。ところで、これはほとんどの場合に解決するかもしれません。ローカル開発環境からPHPを実行しているWindows開発者。
それは超簡単!
_var_dump(getenv('PHPBIN'));
_
ただし、これはWindowsでのみ機能するため、このansverを使用する必要があります https://stackoverflow.com/a/3889630/2574125
どうやってこれを手に入れましたか? echo echo phpinfo();
と入力して、phpパスを検索しました。ジュセはこちらをご覧ください:
それから私はここにちょうど行きます: php getenv そして...結果が表示されます。皆さん、それを使ってください。
Windows、XAMPP
$php = getenv('PHPRC') . '/php.exe';
if(is_file($expected)){
return $php;
}
遅れてるのはわかってるけど…
…PHP 5.4以降、単純に PHP_BINARY
定数 。