PHP 8.6.0 Beta 1 is available for testing

is_executable

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

is_executableIndica si el fichero es ejecutable

Descripción

function is_executable(string $filename): bool

Indica si el fichero es ejecutable.

Parámetros

filename

Ruta de acceso al fichero.

Valores devueltos

Devuelve true si el fichero existe y es ejecutable, false en caso contrario. En los sistemas POSIX, un fichero es ejecutable si el bit ejecutable de los permisos del fichero está definido. En Windows, véase la nota a continuación.

Errores/Excepciones

En caso de fallo, se emitirá una advertencia de tipo E_WARNING .

Ejemplos

Ejemplo #1 Ejemplo con is_executable()

<?php
$file = '/home/vincent/somefile.sh';
if (is_executable($file)) {
 echo $file.' es ejecutable';
} else {
 echo $file.' no es ejecutable';
}
?>

Notas

Nota: Los resultados de esta función se almacenan en caché. Véase la función clearstatcache() para más detalles.

Sugerencia

A partir de PHP 5.0.0, esta función también puede ser utilizada con algunos protocolos url. Lea Protocolos y Envolturas soportados para conocer los protocolos que soportan la familia de funcionalidades de stat() .

Nota: En Windows, un fichero se considera ejecutable si es un fichero ejecutable propio según lo reportado por la API Win GetBinaryType(); por razones de retrocompatibilidad, los ficheros con extensión .bat o .cmd también se consideran ejecutables. Anterior a PHP 7.4.0, cualquier fichero no vacío con extensión .exe o .com se consideraba ejecutable. Cabe señalar que PATHEXT no es relevante para is_executable().

Véase también

  • is_file() - Indica si el fichero es un fichero verdadero
  • is_link() - Indica si el fichero es un enlace simbólico

Found A Problem?

Learn How To Improve This PageSubmit a Pull RequestReport a Bug
+add a note

User Contributed Notes 5 notes

up
6
divinity76 at gmail dot com
7 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
12
Shyammakwana.me
10 years ago
For windows users, 
It will return TRUE for EXE extensions. I have checked for MSI, but it returns FALSE.
up
2
nick at NOSPAM dot ogredata dot com
6 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
-2
telezhkin at gmail dot com
7 years ago
Find no mention of this, but is_executable returns result for owner permissions only (not for group or other).
up
-4
Anonymous
5 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.
+add a note

AltStyle によって変換されたページ (->オリジナル) /