protected function PHPUnit_Util_PHP::getPhpBinary

Returns the path to a PHP interpreter.

PHPUnit_Util_PHP::$phpBinary contains the path to the PHP interpreter.

When not set, the following assumptions will be made:

1. When PHPUnit is run using the CLI SAPI and the $_SERVER['_'] variable does not contain the string "PHPUnit", $_SERVER['_'] is assumed to contain the path to the current PHP interpreter and that will be used.

2. When PHPUnit is run using the CLI SAPI and the $_SERVER['_'] variable contains the string "PHPUnit", the file that $_SERVER['_'] points to is assumed to be the PHPUnit TextUI CLI wrapper script "phpunit" and the binary set up using #! on that file's first line of code is assumed to contain the path to the current PHP interpreter and that will be used.

3. When the PHP CLI/CGI binary configured with the PEAR Installer (php_bin configuration value) is readable, it will be used.

4. The current PHP interpreter is assumed to be in the $PATH and to be invokable through "php".

Return value

string

1 call to PHPUnit_Util_PHP::getPhpBinary()
PHPUnit_Util_PHP::runJob in drupal/core/vendor/phpunit/phpunit/PHPUnit/Util/PHP.php
Runs a single job (PHP code) using a separate PHP process.

File

drupal/core/vendor/phpunit/phpunit/PHPUnit/Util/PHP.php, line 92

Class

PHPUnit_Util_PHP
Utility methods for PHP sub-processes.

Code

protected function getPhpBinary() {
  if ($this->phpBinary === NULL) {
    if (defined("PHP_BINARY")) {
      $this->phpBinary = PHP_BINARY;
    }
    else {
      if (PHP_SAPI == 'cli' && isset($_SERVER['_'])) {
        if (strpos($_SERVER['_'], 'phpunit') !== FALSE) {
          $file = file($_SERVER['_']);
          if (strpos($file[0], ' ') !== FALSE) {
            $tmp = explode(' ', $file[0]);
            $this->phpBinary = trim($tmp[1]);
          }
          else {
            $this->phpBinary = ltrim(trim($file[0]), '#!');
          }
        }
        else {
          if (strpos(basename($_SERVER['_']), 'php') !== FALSE) {
            $this->phpBinary = $_SERVER['_'];
          }
        }
      }
    }
    if ($this->phpBinary === NULL) {
      $possibleBinaryLocations = array(
        PHP_BINDIR . '/php',
        PHP_BINDIR . '/php-cli.exe',
        PHP_BINDIR . '/php.exe',
        '@php_bin@',
      );
      foreach ($possibleBinaryLocations as $binary) {
        if (is_readable($binary)) {
          $this->phpBinary = $binary;
          break;
        }
      }
    }
    if (!is_readable($this->phpBinary)) {
      $this->phpBinary = 'php';
    }
    else {
      $this->phpBinary = escapeshellarg($this->phpBinary);
    }
  }
  return $this->phpBinary;
}