is_executable() 不检查 PATH 环境变量,因此如果您的当前工作目录是 /dir/ 并且您的 PATH 环境中包含 /bin/ 并且文件 /bin/ffmpeg 存在,那么您仍然可以运行 shell_exec("ffmpeg"),但 is_executable("ffmpeg") 将返回 false。
如果您正在寻找一个也考虑 PATH 环境变量的 is_executable 版本,那么请尝试以下方法
<?php
function is_executable_pathenv(string $filename): bool
{
if (is_executable($filename)) {
return true;
}
if ($filename !== basename($filename)) {
return false;
}
$paths = explode(PATH_SEPARATOR, getenv("PATH"));
foreach ($paths as $path) {
if (is_executable($path . DIRECTORY_SEPARATOR . $filename)) {
return true;
}
}
return false;
}