Don't assume that file binary exists on *nix OS

Certain lightweight distributions such as Alpine Linux (popular for smaller Docker images) do not include it by default.
This commit is contained in:
Teoh Han Hui 2018-04-11 14:53:24 +02:00
parent 10674688da
commit e2c1f24fbd

View File

@ -43,7 +43,21 @@ class FileBinaryMimeTypeGuesser implements MimeTypeGuesserInterface
*/
public static function isSupported()
{
return '\\' !== DIRECTORY_SEPARATOR && function_exists('passthru') && function_exists('escapeshellarg');
static $supported = null;
if (null !== $supported) {
return $supported;
}
if ('\\' === DIRECTORY_SEPARATOR || !function_exists('passthru') || !function_exists('escapeshellarg')) {
return $supported = false;
}
ob_start();
passthru('command -v file', $exitStatus);
$binPath = trim(ob_get_clean());
return $supported = 0 === $exitStatus && '' !== $binPath;
}
/**