• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • is_executable()

    (PHP 4, PHP 5, PHP 7)

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

    说明

    is_executable(string $filename): bool

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

    参数

    $filename

    文件的路径。

    返回值

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

    更新日志

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

    范例

    Example #1is_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() 判断给定文件名是否为一个符号连接
    For windows users, 
    It will return TRUE for EXE extensions. I have checked for MSI, but it returns FALSE.
    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;
    }
    Find no mention of this, but is_executable returns result for owner permissions only (not for group or other).

    上篇:is_dir()

    下篇:is_file()