note 123883 modified in function.is-executable by salathe

From: Date: Sun, 26 May 2019 10:06:01 +0000
Subject: note 123883 modified in function.is-executable by salathe
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-211133@lists.php.net to get a copy of this message
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; } --was-- is_executable() does not check the PATH environment variable, so if your current working dir is /dir/ and you /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; } $separator = (stripos(PHP_OS_FAMILY, "win") === false ? ":" : ";"); $paths = explode($separator, getenv("PATH")); foreach ($paths as $path) { if (is_executable($path . DIRECTORY_SEPARATOR . $filename)) { return true; } } return false; } http://php.net/manual/en/function.is-executable.php

« previous php.notes (#211133) next »