You are here

public function FileBinaryMimeTypeGuesser::guess in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/symfony/http-foundation/File/MimeType/FileBinaryMimeTypeGuesser.php \Symfony\Component\HttpFoundation\File\MimeType\FileBinaryMimeTypeGuesser::guess()

Guesses the mime type of the file with the given path.

Parameters

string $path The path to the file:

Return value

string The mime type or NULL, if none could be guessed

Throws

FileNotFoundException If the file does not exist

AccessDeniedException If the file could not be read

Overrides MimeTypeGuesserInterface::guess

File

vendor/symfony/http-foundation/File/MimeType/FileBinaryMimeTypeGuesser.php, line 54

Class

FileBinaryMimeTypeGuesser
Guesses the mime type with the binary "file" (only available on *nix).

Namespace

Symfony\Component\HttpFoundation\File\MimeType

Code

public function guess($path) {
  if (!is_file($path)) {
    throw new FileNotFoundException($path);
  }
  if (!is_readable($path)) {
    throw new AccessDeniedException($path);
  }
  if (!self::isSupported()) {
    return;
  }
  ob_start();

  // need to use --mime instead of -i. see #6641
  passthru(sprintf($this->cmd, escapeshellarg($path)), $return);
  if ($return > 0) {
    ob_end_clean();
    return;
  }
  $type = trim(ob_get_clean());
  if (!preg_match('#^([a-z0-9\\-]+/[a-z0-9\\-\\.]+)#i', $type, $match)) {

    // it's not a type, but an error message
    return;
  }
  return $match[1];
}