merged branch Seldaek/processfinder (PR #4731)
Commits -------45219ef
[Process] Add default xampp path to the list of possible paths to check28e1313
[Process] Clean-up/simplify code56f473a
[Process] Add extra dirs argument to the executable finder to allow searching more dirs Discussion ---------- ExecutableFinder changes It cleans up stuff a bit and adds a guess for xampp users that wouldn't have php in their path
This commit is contained in:
commit
af57fe0f3a
@ -43,12 +43,13 @@ class ExecutableFinder
|
||||
/**
|
||||
* Finds an executable by name.
|
||||
*
|
||||
* @param string $name The executable name (without the extension)
|
||||
* @param string $default The default to return if no executable is found
|
||||
* @param string $name The executable name (without the extension)
|
||||
* @param string $default The default to return if no executable is found
|
||||
* @param array $extraDirs Additional dirs to check into
|
||||
*
|
||||
* @return string The executable path or default value
|
||||
*/
|
||||
public function find($name, $default = null)
|
||||
public function find($name, $default = null, array $extraDirs = array())
|
||||
{
|
||||
if (ini_get('open_basedir')) {
|
||||
$searchPath = explode(PATH_SEPARATOR, getenv('open_basedir'));
|
||||
@ -64,10 +65,17 @@ class ExecutableFinder
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$dirs = explode(PATH_SEPARATOR, getenv('PATH') ? getenv('PATH') : getenv('Path'));
|
||||
$dirs = array_merge(
|
||||
explode(PATH_SEPARATOR, getenv('PATH') ?: getenv('Path')),
|
||||
$extraDirs
|
||||
);
|
||||
}
|
||||
|
||||
$suffixes = DIRECTORY_SEPARATOR == '\\' ? (getenv('PATHEXT') ? explode(PATH_SEPARATOR, getenv('PATHEXT')) : $this->suffixes) : array('');
|
||||
$suffixes = array('');
|
||||
if (defined('PHP_WINDOWS_VERSION_BUILD')) {
|
||||
$pathExt = getenv('PATHEXT');
|
||||
$suffixes = $pathExt ? explode(PATH_SEPARATOR, $pathExt) : $this->suffixes;
|
||||
}
|
||||
foreach ($suffixes as $suffix) {
|
||||
foreach ($dirs as $dir) {
|
||||
if (is_file($file = $dir.DIRECTORY_SEPARATOR.$name.$suffix) && (self::$isWindows || is_executable($file))) {
|
||||
|
@ -46,19 +46,17 @@ class PhpExecutableFinder
|
||||
return $php;
|
||||
}
|
||||
|
||||
$suffixes = DIRECTORY_SEPARATOR == '\\' ? (getenv('PATHEXT') ? explode(PATH_SEPARATOR, getenv('PATHEXT')) : array('.exe', '.bat', '.cmd', '.com')) : array('');
|
||||
foreach ($suffixes as $suffix) {
|
||||
if (is_executable($php = PHP_BINDIR.DIRECTORY_SEPARATOR.'php'.$suffix)) {
|
||||
return $php;
|
||||
}
|
||||
}
|
||||
|
||||
if ($php = getenv('PHP_PEAR_PHP_BIN')) {
|
||||
if (is_executable($php)) {
|
||||
return $php;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->executableFinder->find('php');
|
||||
$dirs = array(PHP_BINDIR);
|
||||
if (defined('PHP_WINDOWS_VERSION_BUILD')) {
|
||||
$dirs[] = 'C:\xampp\php\\';
|
||||
}
|
||||
|
||||
return $this->executableFinder->find('php', false, $dirs);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user