> i am trying to do a simple check for archiving utilities (zip, unzip,
> ...), to make sure they exist within the PATH, and are executable by
> PHP.
>
> i could not find a better way to do this through php, so i went ahead
> and did an
>
> exec('which ' . $utility, $output, $return_value);
>
> then, i check the $return_value for a non-zero value, which would
> indicate that the utility was not found.  using GNU/Linux this seems to
> work fine, but i wouldn't mind keeping my work cross-platform.
>
> so, my question is, is there a better way to do this?

If you don't want to use the shell, you can check the $_SERVER['PATH']
environment variable. On my (linux) system it looks like
"sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin", so you could explode() that
on ':' and then cycle through the files in each directory using readdir(),
checking each with is_executable().

You could also just check the output of your exec() call - it should be
the full path of the executable you're looking for. An empty return would
imply that there isn't a matching executable. I think which always returns
just the first match, since it's meant to show what would get called if
you were to use that command.

Personally I love using exec() to make php behave like bash at times, but
posts on this list from pparently knowledgeable people occasionally imply
that it's not the best/fastest/most stable method to use, so I try not to.

-mike.

---------------------------------------------------------------------
michal migurski- contact info and pgp key:
sf/ca            http://mike.teczno.com/contact.html

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to