PHP: Hypertext Preprocessor (original) (raw)

is_executable

(PHP 4, PHP 5, PHP 7, PHP 8)

is_executable — Tells whether the filename is executable

Description

Parameters

filename

Path to the file.

Return Values

Returns [true](reserved.constants.php#constant.true) if the filename exists and is executable, or [false](reserved.constants.php#constant.false) on error. On POSIX systems, a file is executable if the executable bit of the file permissions is set. For Windows, see the note below.

Errors/Exceptions

Upon failure, an [E_WARNING](errorfunc.constants.php#constant.e-warning) is emitted.

Examples

Example #1 is_executable() example

`<?php

$file

= '/home/vincent/somefile.sh';

if (

is_executable($file)) {
echo $file.' is executable';
} else {
echo $file.' is not executable';
}?>`

Notes

Note: The results of this function are cached. See clearstatcache() for more details.

Note: On Windows, a file is considered executable, if it is a properly executable file as reported by the Win API GetBinaryType(); for BC reasons, files with a .bat or .cmd extension are also considered executable. Prior to PHP 7.4.0, any non-empty file with a .exe or .com extension was considered executable. Note that PATHEXT is irrelevant for is_executable().

See Also

Found A Problem?

divinity76 at gmail dot com

5 years ago

`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:

result=isexecutable(result = is_executable(result=isexecutable(dir) ? 'true' : 'false'; if( $result){ echo $result; } ?>

So do NOT use this to check if a folder is transversable because it will be system dependant code.

`

telezhkin at gmail dot com

6 years ago

Find no mention of this, but is_executable returns result for owner permissions only (not for group or other).