is_executable()
(PHP 4, PHP 5, PHP 7)
判断给定文件名是否可执行
说明
is_executable(string $filename): bool
判断给定文件名是否可执行。
参数
- $filename
文件的路径。
返回值
如果文件存在且可执行则返回TRUE
,错误时返回FALSE
。
更新日志
版本 | 说明 |
---|---|
5.0.0 | is_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
警告。
注释
TipNote:此函数的结果会被缓存。参见clearstatcache()以获得更多细节。
自 PHP 5.0.0 起,此函数也用于某些URL 包装器。请参见支持的协议和封装协议以获得支持stat()系列函数功能的包装器列表。
参见
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).