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 — Bir dosyanın çalıştırılabilir bir dosya olup olmadığını söyler
Belirtilen dosyanın çalıştırılabilir bir dosya olup olmadığını söyler.
dosyaismi
Dosyanın yolu.
dosyaismi
ile belirtilen dosya mevcutsa ve
çalıştırılabilir bir dosya ise true
aksi takdirde false
döndürür.
POSIX sistemlerde, dosya izinlerinde çalıştırılabilir biti etkin kılınmışsa
dosya çalıştırılabilir bir dosya olur. Windows için aşağıda Notlar bölümüne
bakın.
Başarısızlık durumunda bir
E_WARNING
çıktılanır.
Örnek 1 - is_executable() örneği
<?php
$dosya = '/home/vincent/somefile.sh';
if (is_executable($dosya)) {
echo $dosya.' çalıştırılabilir';
} else {
echo $dosya.' çalıştırılamaz';
}
?>
Bilginize: Bu işlevin sonuçları önbelleğe kaydedilir. Daha ayrıntılı bilgi clearstatcache() işlevinde bulunabilir.
PHP 5.0.0 sürümünden itibaren bu işlev bazı URL sarmalayıcıları ile kullanılabilmektedir. stat() ailesini destekleyen sarmalayıcıların listesi Desteklenen Protokoller ve Sarmalayıcılar başlığı altında bulunabilir.
Bilginize: Windows'ta, bir dosya Win API
GetBinaryType()
tarafından tamamen çalıştırılabilir bir dosya olarak raporlanıyorsa dosya çalıştırılabilir bir dosya olarak kabul edilir. Tarihsel sebeplerle, .bat ve .cmd uzantılı dosyalar da çalıştırılabilir dosyalar olarak kabul edilir. PHP 7.4.0 öncesinde, .exe veya .com uzantılı bir dosya boş değilse çalıştırılabilir dosya olduğu varsayılırdı. is_executable() işlevi açısından PATHEXT'in konu dışı oluşuna dikkat edin.
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;
}
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).