Edit report at http://bugs.php.net/bug.php?id=52072&edit=1

 ID:               52072
 Updated by:       ras...@php.net
 Reported by:      php at richardneill dot org
 Summary:          RFE: can we have `which`
 Status:           Wont fix
 Type:             Feature/Change Request
 Package:          Filesystem function related
 Operating System: Linux
 PHP Version:      Irrelevant

 New Comment:

Using exec is definitely not the best way to do that one.  Anytime you
fork+exec a 

new process you take on a significant performance penalty.  Same goes
for your 

system() example.  But, if you can do it in a couple of lines without
resorting to 

an exec(), then it is indeed trivial.  file_get_contents() is slightly
more 

complicated because of the streams support in it.


Previous Comments:
------------------------------------------------------------------------
[2010-06-13 03:06:33] php at richardneill dot org

Thanks for your quick reply. I agree - it's trivial to do in userspace.




The simplest way is just to 

 $lastline = exec ("which $ffmpeg", $output, $retval)

 if (retval){

   return ($lastline)

 }else{

   return ($false)

 } 





Indeed many of the PHP functions are trivial in that sense - one could
build file_get_contents() out of fopen(),file(),fclose(), or could avoid
using unlink by a call to system("rm filename").



However the attraction of PHP is that so many of the required functions
already exist and I don't have to write them. So I think that which()
would be a useful addition. 



I'm particularly thinking of the cases where php-cli is an improvement
on shell-scripting.

------------------------------------------------------------------------
[2010-06-13 02:47:08] ras...@php.net

This seems trivial to do in userspace to me:



function which($cmd) {

        $paths = explode(':',$_ENV['PATH']);

        foreach($paths as $path) {

                $p = $path.'/'.$cmd;

                if(file_exists($p)) return $p;

        }

        return false;

}

------------------------------------------------------------------------
[2010-06-13 02:34:12] php at richardneill dot org

Description:
------------
It would be nice if PHP had a builtin "which" command.



For example,  which("ffmpeg")  would allow the user to check whether
ffmpeg 

was installed, prior to calling it with exec().

Test script:
---------------
which("ffmpeg") should return eg:

 /usr/bin/ffmpeg

if the command exists, and is in the £PATH for exec(), or

 false

if it doesn't exist.



------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=52072&edit=1

Reply via email to