2015-08-17 17:00:26 -07:00
< ? php
/*
* This file is part of the Symfony package .
*
* ( c ) Fabien Potencier < fabien @ symfony . com >
*
* For the full copyright and license information , please view the LICENSE
* file that was distributed with this source code .
*/
namespace Symfony\Component\Process ;
/**
* An executable finder specifically designed for the PHP executable .
*
* @ author Fabien Potencier < fabien @ symfony . com >
* @ author Johannes M . Schmitt < schmittjoh @ gmail . com >
*/
class PhpExecutableFinder
{
private $executableFinder ;
public function __construct ()
{
$this -> executableFinder = new ExecutableFinder ();
}
/**
* Finds The PHP executable .
*
* @ param bool $includeArgs Whether or not include command arguments
*
* @ return string | false The PHP executable path or false if it cannot be found
*/
public function find ( $includeArgs = true )
{
2016-04-20 09:56:34 -07:00
$args = $this -> findArguments ();
$args = $includeArgs && $args ? ' ' . implode ( ' ' , $args ) : '' ;
2015-08-17 17:00:26 -07:00
// HHVM support
if ( defined ( 'HHVM_VERSION' )) {
2016-04-20 09:56:34 -07:00
return ( getenv ( 'PHP_BINARY' ) ? : PHP_BINARY ) . $args ;
2015-08-17 17:00:26 -07:00
}
// PHP_BINARY return the current sapi executable
2016-04-20 09:56:34 -07:00
if ( defined ( 'PHP_BINARY' ) && PHP_BINARY && in_array ( PHP_SAPI , array ( 'cli' , 'cli-server' , 'phpdbg' )) && is_file ( PHP_BINARY )) {
return PHP_BINARY . $args ;
2015-08-17 17:00:26 -07:00
}
if ( $php = getenv ( 'PHP_PATH' )) {
if ( ! is_executable ( $php )) {
return false ;
}
return $php ;
}
if ( $php = getenv ( 'PHP_PEAR_PHP_BIN' )) {
if ( is_executable ( $php )) {
return $php ;
}
}
$dirs = array ( PHP_BINDIR );
if ( '\\' === DIRECTORY_SEPARATOR ) {
$dirs [] = 'C:\xampp\php\\' ;
}
return $this -> executableFinder -> find ( 'php' , false , $dirs );
}
/**
* Finds the PHP executable arguments .
*
* @ return array The PHP executable arguments
*/
public function findArguments ()
{
$arguments = array ();
if ( defined ( 'HHVM_VERSION' )) {
$arguments [] = '--php' ;
2016-04-20 09:56:34 -07:00
} elseif ( 'phpdbg' === PHP_SAPI ) {
$arguments [] = '-qrr' ;
2015-08-17 17:00:26 -07:00
}
return $arguments ;
}
}