<?php 
 
/* 
 * This file is part of the Symfony package. 
 * 
 * (c) Fabien Potencier <[email protected]> 
 * 
 * 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 <[email protected]> 
 * @author Johannes M. Schmitt <[email protected]> 
 */ 
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) 
    { 
        $args = $this->findArguments(); 
        $args = $includeArgs && $args ? ' '.implode(' ', $args) : ''; 
 
        // HHVM support 
        if (defined('HHVM_VERSION')) { 
            return (getenv('PHP_BINARY') ?: PHP_BINARY).$args; 
        } 
 
        // PHP_BINARY return the current sapi executable 
        if (PHP_BINARY && in_array(PHP_SAPI, array('cli', 'cli-server', 'phpdbg')) && is_file(PHP_BINARY)) { 
            return PHP_BINARY.$args; 
        } 
 
        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'; 
        } elseif ('phpdbg' === PHP_SAPI) { 
            $arguments[] = '-qrr'; 
        } 
 
        return $arguments; 
    } 
} 
 
 |