Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

PHP Filesystem is_executable() Function



The PHP Filesystem is_executable() function is used to determine whether a given file is executable or not. The file path is the only input required for this function.

On POSIX systems (like Linux and macOS), a file represents executable if the executable bit is set in its permissions. To check file permissions, use the ls -l program in your terminal.

With Windows systems, the situation is a little different. It might not always accurately reflect whether a file is executable or not because of how its permissions are handled. It is often advised to use different methods to validate executable files on Windows.

Syntax

Below is the syntax of the PHP Filesystem is_executable() function −

bool is_executable(string $filename)

Parameters

Below are the required parameters of the is_executable() function −

Sr.No Parameter & Description
1

$filename(Required)

It is the file path that you want to check.

Return Value

Returns true if the filename is executable and exists, and false otherwise. If the executable bit is set in the file permissions, then a file is executable on POSIX systems.

PHP Version

The is_executable() function was first introduced as part of core PHP 4 and work well with the PHP 5, PHP 7 and PHP 8.

Example

We have used the PHP Filesystem is_executable() function to check that the given file is executable or not.

<?php
   // Mention the file path here
   $file = '/PhpProjects/myfile.sh';

   if (is_executable($file)) {
       echo $file.' is executable';
   } else {
       echo $file.' is not executable';
   }
   
?>

Output

Here is the outcome of the following code −

/PhpProjects/myfile.sh is executable

Example

The code example below shows how you can use PHP's is_executable() function to check whether a file has executable rights. The line $file = "/Applications/XAMPP/xamppfiles/bin/perl"; assigns a path to the variable $file. This specific path opens the perl executable on a computer running XAMPP.

<?php
   //mention your path here
   $file = "/Applications/XAMPP/xamppfiles/bin/perl"; // Replace with path to an actual executable on your system

   if (is_executable($file)) {
   echo "The file '$file' is executable.";
   } else {
   echo "The file '$file' is not executable (unexpected).";
   }
?> 

Output

This will produce the following result −

The file '/Applications/XAMPP/xamppfiles/bin/perl' is executable.

Example

In this PHP code, we will use is_executable() function to check a file path that likely does not present. So the is_executable() function will typically return false in this case, showing that the file does not exist or it is not executable.

<?php
   //Mention your path here
   $file = "/Users/Desktop/My Docs/PHP/PhpProjects/index.php";

   if (is_executable($file)) {
   echo "The file '$file' is executable (unexpected).";
   } else {
   echo "The file '$file' does not exist or is not executable.";
   }
?> 

Output

This will generate the below result −

The file '/User/PHP/PhpProjects/index.php' does not exist or is not executable.

Example

This sample shows how you can use clearstatcache() function with is_executable() function. Let us say you use chmod to copy changing the file's permissions and then verify that the file is executable. Because is_executable() caches results, the permission change might not be reflected right away.

<?php
   // Mention multiple paths here
   $file = "/PhpProjects/script.sh"; // Modify this path to an actual file

   // Simulate permission change (replace with your permission modification logic)
   chmod($file, 0755);  // Grant all permissions (modify as needed)

   if (is_executable($file)) {
   echo "The file '$file' is executable.";
   } else {
   echo "The file '$file' is not executable.";

   // Clear cache and re-check (uncomment if needed)
   clearstatcache($file);

   if (is_executable($file)) {
      echo "Executable after clearing cache (possible race condition)";
      }
   }
?> 

Output

This will produce the following output −

#Script Exists and Initially Executable
The file '/PhpProjects/script.sh' is executable.

#Script Exists but Not Initially Executable
The file '/PhpProjects/script.sh' is not executable.

#Script Does not Exist
The file '/PhpProjects/script.sh' is not executable.

Note

Similar to the Win API GetBinaryType(), files ending in.bat or .cmd are also identified as executable on Windows if they are valid executables. This is as a result of Backward Compatibility's mandatory behavior. Prior to PHP 7.4.0, every non-empty file ending in .exe or .com was considered executable. Remember that PATHEXT is unrelated to is_executable().

Summary

The is_executable() function is a powerful function for checking the given file is a executable or not in PHP. PHP saves the results of is_executable() in a cache to improve performance. This means that if you call the function more than once with the same filename, it will return the cached result rather than rechecking the file system.

php_function_reference.htm
Advertisements