¿Cómo puedo obtener la ruta bin de php desde PHP? Lo vi en phpinfo(); pero necesito otro método que lo consiga en Linux y sistemas de Windows.¿Cómo obtener la ruta del PHP BIN desde PHP?
Respuesta
Se puede utilizar:
$_SERVER['_']
Además, the predefined constant PHP_BINDIR
da el directorio donde se encuentra el ejecutable php.
Parece que, por razones de seguridad, $_SERVER
los valores no están expuestos. (Supongo. Por favor corrígeme si estoy equivocado).
En Windows, la constante PHP_BINDIR parece apuntar a "C: \ php5" incluso si php está en un directorio totalmente diferente, como para mí "C: \ dev \ php". Aquí, PHP se configura como un módulo de Apache. – SirDarius
El servidor en el que estaba desafortunadamente devolvió NULL, supongo que por razones de seguridad. – Chris
PHP_BINDIR funcionó para mí en Debian. $ _SERVER ['_'] no lo hizo. –
Un método que utiliza variables de entorno, suponiendo que el ejecutable php está en la ruta del sistema.
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
}
Esto funcionó para mí en Windows y Linux, ¡gracias! – SeanDowney
@ggirtsou No obtengo su edición ... ¿por qué la ruta de Windows contiene una entrada con "php.exe"? Si es algo específico de XAMPP, al menos agregue un comentario significativo en el código. – SirDarius
@SirDarius sí, la edición se basa en la salida de XAMPP. –
Linux Sólo El comando "que" para encontrar php.
$phpPath = exec("which php");
Nota esto no garantiza el mismo ejecutable php que su servidor web puede estar usando, sino más bien el primer caso que se encontró mientras mira a través de los caminos.
Buen punto, pero la mayoría de los servicios de hosting no permiten ' exec' en absoluto. – Hossein
Sí, algunos hosts no, otros lo hacen, supongo que depende de su contexto. – SeanDowney
Esto no necesariamente da como resultado el binario php correcto, ya que Apache y la línea de comandos podrían estar usando otros diferentes. –
Quizás la mejor solución esté en el componente de proceso de Symfony: https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Process/PhpExecutableFinder.php y https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Process/ExecutableFinder.php. En uso:
<?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;
Normalmente, en una sencilla instalación predeterminada de PHP en Windows, el archivo php.ini se encuentra y se carga desde el mismo directorio de PHP binario.
Para simplificar, los usuarios de Windows:
echo dirname(php_ini_loaded_file()).DIRECTORY_SEPARATOR.'php.exe';
voilà!
Por supuesto, si está utilizando múltiples archivos ini, puede que no funcione si los archivos no están en el mismo directorio binario de PHP. Por cierto, esto puede resolver la mayoría de los casos. Desarrolladores de Windows que ejecutan PHP desde el entorno de desarrollo local.
lo siento, olvidé de decir que estoy usando mac –
En windows, usando wamp, puede usar la variable ini --dirección_de_extensión-- como se coloca en la carpeta php.
así:
echo str_replace('ext/', 'php.exe', ini_get('extension_dir'));
Es muy fácil!
var_dump(getenv('PHPBIN'));
Pero funciona sólo en Windows, por lo que debe utilizar este ansver - https://stackoverflow.com/a/3889630/2574125
cómo llegué a esto? Acabo de escribir echo echo phpinfo();
y busqué la ruta php. Juse ver aquí:
entonces acabo de llegar aquí: php getenv y ... ves el resultado. Úselo, amigos.
Devuelve un resultado erróneo en XAMMP – ymakux
de Windows, XAMPP
$php = getenv('PHPRC') . '/php.exe';
if(is_file($expected)){
return $php;
}
- 1. PHP ruta del directorio recursivo
- 2. ¿Cómo obtener PID desde la función PHP exec() en Windows?
- 3. Desinfectar la ruta del archivo en PHP
- 4. ¿Cómo puedo evitar mostrar "#!/Usr/bin/php" en PHP?
- 5. PHP mostrar la ruta actual del servidor
- 6. PHP Obtener ruta de directorio único
- 7. ¿Cómo obtener la ruta absoluta del archivo desde la ruta base y relativa que contiene ".."?
- 8. argumentos PHP llevan desde ruta URL
- 9. Cómo cambiar la ruta a php.ini en PHP CLI versión
- 10. ¿Es posible verificar la sintaxis del archivo PHP desde PHP?
- 11. Cómo modifico la ruta utilizada por exec en php
- 12. ¿Cómo obtener la ruta del archivo desde el URI?
- 13. obtener ruta desde la url
- 14. Obtener la configuración de Apache desde el script PHP
- 15. php include_once ruta
- 16. Obteniendo la RUTA completa del archivo cargado - PHP
- 17. ¿Cómo obtener información del sistema en PHP?
- 18. ¿Cómo obtener la ruta del archivo en html <input type = "file"> en PHP?
- 19. PHP: ¿Cómo obtener la fecha de creación del archivo cargado?
- 20. PHP: open_basedir ruta permitida
- 21. PHP Gettext: ¿cómo cambiar la ruta MO predeterminada después de establecer la ruta del dominio?
- 22. ¿Cómo obtener la versión de PHP?
- 23. Obtener directorio raíz Ruta de un proyecto PHP
- 24. Cómo obtener la URL anterior con PHP
- 25. ¿Cómo obtener la ruta del servidor de la ruta física?
- 26. Pasar una ruta válida a Python desde PHP
- 27. ¿Se requiere #!/Usr/bin/env para ejecutar PHP desde la línea de comandos?
- 28. PHP dinámicos incluyen basa en la ruta del archivo actual
- 29. ¿Forma PHP de encontrar la ruta temporal del servidor web?
- 30. PHP: ¿cómo puedo obtener la fecha de creación del archivo?
posible duplicado de [Obtener ejecutable PHP actual desde dentro guión?] (Http://stackoverflow.com/questions/2372624/get-current-php-executable-from-within -script) – Gordon