web-dev-qa-db-fra.com

Comment obtenir le chemin du PHP BIN de PHP?

Comment puis-je obtenir le chemin bin de php à partir de PHP? Je l'ai vu dans phpinfo (); mais j'ai besoin d'une autre méthode qui l'obtient dans les systèmes Linux et Windows.

17
Wiliam

Vous pouvez utiliser:

$_SERVER['_']

De plus, la constante prédéfinie PHP_BINDIR donne le répertoire dans lequel se trouve l'exécutable php.

Exemple sur Codepad and ideone

Pour des raisons de sécurité, les valeurs $_SERVER ne sont pas exposées. (Je suppose. S'il vous plaît corrigez-moi si je me trompe).

20
codaddict

Linux uniquement Utilisez la commande "which" pour rechercher php. 

$phpPath = exec("which php");

Notez que cela ne garantit pas le même exécutable php que votre serveur Web peut utiliser, mais plutôt la première instance trouvée lors de la recherche dans les chemins.

15
SeanDowney

Une méthode utilisant des variables d'environnement, en supposant que l'exécutable php se trouve dans le chemin du système.

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

La meilleure solution réside peut-être dans le composant de processus Symfony: https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Process/PhpExecutableFinder.php et https: // github .com/symfony/symfony/blob/master/src/Symfony/Component/Process/ExecutableFinder.php . Utilisé:

<?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

Dans Windows, en utilisant wamp, vous pouvez utiliser la variable ini - extension_dir - telle qu'elle est placée dans le dossier php.

comme ça:

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

Normalement, dans une installation simple par défaut de PHP sous Windows, le fichier php.ini est localisé et chargé à partir du même répertoire que PHP binary.

Pour simplifier, les utilisateurs Windows:

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

voilà!

Bien entendu, si vous utilisez plusieurs fichiers ini, cette solution peut ne pas fonctionner si les fichiers ne se trouvent pas dans le même répertoire binaire PHP. BTW, cela peut résoudre dans la plupart des cas. Les développeurs Windows exécutant PHP à partir d'un environnement de développement local.

1
Daniel Omine

C'est très facile! 

var_dump(getenv('PHPBIN'));

Mais cela ne fonctionne que sous Windows, nous devrions donc utiliser cet ansver - https://stackoverflow.com/a/3889630/2574125

Comment j'ai eu ça? Je viens de taper echo echo phpinfo(); et de rechercher le chemin php. Juse voir ici:  how i found php path

alors je viens juste d'arriver ici: php getenv et ... vous voyez le résultat. Utilisez-le, les gens.

0
aftamat4ik

Windows, XAMPP

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

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