is_executable

(PHP 4, PHP 5, PHP 7)

is_executable判断给定文件名是否可执行

说明

is_executable ( string $filename ) : bool

判断给定文件名是否可执行。

参数

filename

文件的路径。

返回值

如果文件存在且可执行则返回 TRUE,错误时返回FALSE

更新日志

版本 说明
5.0.0 is_executable() 开始可用以于 Windows

范例

Example #1 is_executable() 例子

<?php

$file 
'/home/vincent/somefile.sh';

if (
is_executable($file)) {
    echo 
$file.' is executable';
} else {
    echo 
$file.' is not executable';
}

?>

错误/异常

失败时抛出E_WARNING警告。

注释

Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

Tip

自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 支持的协议和封装协议以获得支持 stat() 系列函数功能的包装器列表。

参见

  • is_file() - 判断给定文件名是否为一个正常的文件
  • is_link() - 判断给定文件名是否为一个符号连接

User Contributed Notes

divinity76 at gmail dot com 24-May-2019 09:41
is_executable() does not check the PATH environment variable, so if your current working dir is /dir/ and you have /bin/ in your PATH env and the file /bin/ffmpeg exists, then you can still run shell_exec("ffmpeg"), but is_executable("ffmpeg") will return false.

if you're looking for a version of is_executable that also considers the PATH environment variable, then try this:

<?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;
}
telezhkin at gmail dot com 01-May-2019 11:03
Find no mention of this, but is_executable returns result for owner permissions only (not for group or other).
Shyammakwana.me 06-Aug-2016 06:38
For windows users,

It will return TRUE for EXE extensions. I have checked for MSI, but it returns FALSE.