PHP 8.4.0 RC4 available for testing

is_executable

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

is_executableBir dosyanın çalıştırılabilir bir dosya olup olmadığını söyler

Açıklama

is_executable(string $dosyaismi): bool

Belirtilen dosyanın çalıştırılabilir bir dosya olup olmadığını söyler.

Bağımsız Değişkenler

dosyaismi

Dosyanın yolu.

Dönen Değerler

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.

Hatalar/İstisnalar

Başarısızlık durumunda bir E_WARNING çıktılanır.

Örnekler

Ö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';
}

?>

Notlar

Bilginize: Bu işlevin sonuçları önbelleğe kaydedilir. Daha ayrıntılı bilgi clearstatcache() işlevinde bulunabilir.

İpucu

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.

Ayrıca Bakınız

  • is_file() - Bir dosyanın sıradan bir dosya olup olmadığını söyler
  • is_link() - Dosya sembolik bağ ise bunu doğrular

add a note

User Contributed Notes 5 notes

up
13
Shyammakwana.me
8 years ago
For windows users,

It will return TRUE for EXE extensions. I have checked for MSI, but it returns FALSE.
up
5
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:

<?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;
}
up
2
nick at NOSPAM dot ogredata dot com
4 years ago
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.
up
-1
telezhkin at gmail dot com
5 years ago
Find no mention of this, but is_executable returns result for owner permissions only (not for group or other).
up
-1
Anonymous
4 years ago
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.
To Top