ZetCode

PHP is_executable 函数

最后修改于 2025 年 4 月 3 日

PHP 的 is_executable 函数用于检查一个文件是否可执行。它在返回布尔结果之前会验证文件权限和是否存在。

基本定义

is_executable 函数判断指定的文件是否可执行。它检查文件的存在性和其可执行权限。

语法:is_executable(string $filename): bool。如果文件存在且可执行,则返回 true,否则返回 false。 适用于 Unix 和 Windows。

is_executable 基本示例

这展示了 is_executable 的最简单用法,用于检查一个文件。

basic_is_executable.php
<?php

declare(strict_types=1);

$file = "/usr/bin/php";
$isExecutable = is_executable($file);

echo $isExecutable ? "File is executable" : "File is not executable";

这检查 PHP 二进制文件是否可执行。 结果取决于您系统的权限。 在大多数系统上,这将为 PHP 二进制文件返回 true。

检查脚本文件

我们可以验证一个 PHP 脚本本身是否具有可执行权限。

check_script.php
<?php

declare(strict_types=1);

$script = __FILE__;
$isExecutable = is_executable($script);

if ($isExecutable) {
    echo "This script has executable permissions";
} else {
    echo "This script is not executable";
}

这检查当前脚本的可执行性。请注意,PHP 脚本通常不需要可执行标志,因为它们由 PHP 解释器执行。

Windows 可执行文件检查

在 Windows 上,is_executable 检查 PATHEXT 中的文件扩展名。

windows_check.php
<?php

declare(strict_types=1);

$file = "C:\\Windows\\System32\\cmd.exe";
$isExecutable = is_executable($file);

var_dump($isExecutable); // Outputs: bool(true)

这验证 cmd.exe 是否可执行。在 Windows 上,它检查文件是否存在以及扩展名是否在系统的 PATHEXT 环境变量中。

检查目录

is_executable 也可以检查一个目录是否可执行。

directory_check.php
<?php

declare(strict_types=1);

$dir = "/tmp";
$isExecutable = is_executable($dir);

echo $isExecutable ? "Directory is searchable" : "Directory is not searchable";

对于目录,可执行权限意味着该目录是可搜索的。如果还设置了读取权限,则允许访问目录中的文件。

相对路径检查

该函数也适用于相对路径和绝对路径。

relative_path.php
<?php

declare(strict_types=1);

$file = "./test.sh";
$isExecutable = is_executable($file);

if ($isExecutable) {
    echo "The local test.sh script is executable";
} else {
    echo "The script is not executable or doesn't exist";
}

这检查当前目录中的 shell 脚本。 请记住,相对路径是相对于 PHP 进程的当前工作目录解析的。

边缘情况

is_executable 在特殊情况下具有特定的行为。

edge_cases.php
<?php

declare(strict_types=1);

$nonexistent = "/nonexistent/file";
$symlink = "/usr/bin/php"; // Assuming this is a symlink on your system

var_dump(is_executable($nonexistent)); // bool(false)
var_dump(is_executable($symlink));     // Follows symlink to target

对于不存在的文件,它返回 false。对于符号链接,它会跟踪到目标。该函数在检查权限时还会考虑有效的用户 ID。

最佳实践

来源

PHP is_executable 文档

本教程介绍了 PHP 的 is_executable 函数,并提供了实际示例,展示了它在不同操作系统中的各种场景中的用法。

作者

我叫 Jan Bodnar,是一位充满激情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直在撰写编程文章。 迄今为止,我撰写了 1,400 多篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

列出 所有 PHP 文件系统函数