web-dev-qa-db-ja.com

PHPからPHP BINのパスを取得する方法は?

PHPからPHPのビンパスを取得するにはどうすればよいですか? phpinfo()で見ました。 LinuxとWindowsシステムでそれを取得する別の方法が必要です。

19
Wiliam

以下を使用できます。

$_SERVER['_']

また、 事前定義された定数PHP_BINDIR は、php実行可能ファイルが見つかったディレクトリを示します。

Codepad および ideone のサンプル。

セキュリティ上の理由から、$_SERVER値は公開されません。 (私は推測します。私が間違っている場合は修正してください)。

20
codaddict

Linuxのみ "which"コマンドを使用してphpを検索します。

$phpPath = exec("which php");

これは、Webサーバーが使用している可能性のある同じphp実行可能ファイルを保証するものではなく、パスを調べているときに最初に見つかったインスタンスを保証するものではないことに注意してください。

15
SeanDowney

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
}
9
SirDarius

多分最良の解決策は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;
6

Windowsでは、wampを使用して、phpフォルダーに配置されているini変数-extension_dir-を使用できます。

このような:

echo str_replace('ext/', 'php.exe', ini_get('extension_dir'));
4
John

通常、Windowsでの単純なデフォルトのPHPインストールでは、php.iniファイルがPHPバイナリの同じディレクトリから検索されて読み込まれます。

簡単にするために、Windowsユーザー:

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

ほら!

もちろん、複数のiniファイルを使用している場合、ファイルが同じPHPバイナリディレクトリにない場合、動作しない可能性があります。ところで、これはほとんどの場合に解決するかもしれません。ローカル開発環境からPHPを実行しているWindows開発者。

2
Daniel Omine

それは超簡単!

_var_dump(getenv('PHPBIN'));
_

ただし、これはWindowsでのみ機能するため、このansverを使用する必要があります https://stackoverflow.com/a/3889630/2574125

どうやってこれを手に入れましたか? echo echo phpinfo();と入力して、phpパスを検索しました。ジュセはこちらをご覧ください: how i found php path

それから私はここにちょうど行きます: php getenv そして...結果が表示されます。皆さん、それを使ってください。

0
aftamat4ik

Windows、XAMPP

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

if(is_file($expected)){
   return $php;
}
0
ymakux

遅れてるのはわかってるけど…

…PHP 5.4以降、単純に PHP_BINARY定数

0
Joe