| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 | <?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.     *     * @return string|false     */    public function find(bool $includeArgs = true)    {        if ($php = getenv('PHP_BINARY')) {            if (!is_executable($php)) {                $command = '\\' === \DIRECTORY_SEPARATOR ? 'where' : 'command -v --';                if ($php = strtok(exec($command.' '.escapeshellarg($php)), \PHP_EOL)) {                    if (!is_executable($php)) {                        return false;                    }                } else {                    return false;                }            }            if (@is_dir($php)) {                return false;            }            return $php;        }        $args = $this->findArguments();        $args = $includeArgs && $args ? ' '.implode(' ', $args) : '';        // PHP_BINARY return the current sapi executable        if (\PHP_BINARY && \in_array(\PHP_SAPI, ['cli', 'cli-server', 'phpdbg'], true)) {            return \PHP_BINARY.$args;        }        if ($php = getenv('PHP_PATH')) {            if (!@is_executable($php) || @is_dir($php)) {                return false;            }            return $php;        }        if ($php = getenv('PHP_PEAR_PHP_BIN')) {            if (@is_executable($php) && !@is_dir($php)) {                return $php;            }        }        if (@is_executable($php = \PHP_BINDIR.('\\' === \DIRECTORY_SEPARATOR ? '\\php.exe' : '/php')) && !@is_dir($php)) {            return $php;        }        $dirs = [\PHP_BINDIR];        if ('\\' === \DIRECTORY_SEPARATOR) {            $dirs[] = 'C:\xampp\php\\';        }        return $this->executableFinder->find('php', false, $dirs);    }    /**     * Finds the PHP executable arguments.     *     * @return array     */    public function findArguments()    {        $arguments = [];        if ('phpdbg' === \PHP_SAPI) {            $arguments[] = '-qrr';        }        return $arguments;    }}
 |