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;
}is_executable
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
is_executable
Референца за `function.is-executable.php` со подобрена типографија и навигација.
is_executable
(PHP 4, PHP 5, PHP 7, PHP 8)
is_executable — Проверува дали името на датотеката е извршно
Параметри
filename-
Патека до датотеката.
Вратени вредности
Патеката до PHP скриптата што треба да се провери. true ако името на датотеката постои и е извршно, или false при грешка. На POSIX системи, датотеката е извршна ако е поставен битот за извршување во дозволите на датотеката. За Windows, видете ја белешката подолу.
Errors/Exceptions
Бидејќи типот на податоци integer во PHP е со знакот и многу платформи користат 32-битни integers, некои функции за датотечниот систем може да вратат неочекувани резултати за датотеки поголеми од 2GB. E_WARNING се емитува.
Примери
Пример #1 is_executable() example
<?php
$file = '/home/vincent/somefile.sh';
if (is_executable($file)) {
echo $file.' is executable';
} else {
echo $file.' is not executable';
}
?>Белешки
Забелешка: Имајте предвид дека резолуцијата на времето може да се разликува од еден датотечен систем до друг. clearstatcache() за повеќе детали.
Резултатите од оваа функција се кеширани. Погледнете some Од PHP 5.0.0, оваа функција може да се користи и со Поддржани протоколи и обвивки URL обвивки. Погледнете stat() за да се утврди кои обвивки поддржуваат
Забелешка: На Windows, датотеката се смета за извршна ако е правилно извршна датотека како што е пријавено од Win API
GetBinaryType(); од BC причини, датотеките со .bat or .cmd екстензија исто така се сметаат за извршни. Пред PHP 7.4.0, секоја непразна датотека со .exe or .com екстензија се сметаше за извршна. Забележете дека PATHEXT е ирелевантно за is_executable().
Белешки од корисници 5 белешки
For windows users,
It will return TRUE for EXE extensions. I have checked for MSI, but it returns FALSE.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.Find no mention of this, but is_executable returns result for owner permissions only (not for group or other).