For windows users,
It will return TRUE for EXE extensions. I have checked for MSI, but it returns FALSE.
(PHP 4, PHP 5, PHP 7, PHP 8)
is_executable — Prüft, ob der Dateiname ausführbar ist
$filename
) : boolPrüft, ob der Dateiname ausführbar ist.
filename
Pfad zur Datei.
Gibt true
zurück, wenn der Dateiname existiert und ausführbar ist,
oder false
im Fehlerfall.
Beispiel #1 is_executable()-Beispiel
<?php
$file = '/home/vincent/somefile.sh';
if (is_executable($file)) {
echo $file.' ist ausführbar';
} else {
echo $file.' ist nicht ausführbar';
}
?>
Im Fehlerfall wird eine E_WARNING
ausgegeben.
Hinweis: Die Ergebnisse dieser Funktion werden gecached. Weitere Details erhalten Sie bei clearstatcache().
Seit PHP 5.0.0 kann diese Funktion mit einigen URL-Wrappern verwendet werden. Schauen Sie in der Liste unter Unterstützte Protokolle und Wrapper nach, welcher Wrapper die Funktionalität von stat() unterstützt.
For windows users,
It will return TRUE for EXE extensions. I have checked for MSI, but it returns FALSE.
Under windows, it seems to returns always false for directories.
I.e
<?php
$dir = __DIR__;
$result = is_executable($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.
This function returns the value for the process PHP is executing under.
/var/somebody/files was only executable by owner (700).
It contained world-readable files, but without execute permission, PHP could not access the directory to download the files.
is_executable() returned false.
Making the dir world-executable (701) gave access to PHP. The download worked. And is_executable() returned true.
I assume that if I added PHP to the group of the folder and gave the group executable permission, that would also work.
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).