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.
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).
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.
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
}
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;
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'));
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.
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:
alors je viens juste d'arriver ici: php getenv et ... vous voyez le résultat. Utilisez-le, les gens.
Windows, XAMPP
$php = getenv('PHPRC') . '/php.exe';
if(is_file($expected)){
return $php;
}