Я на CentOS 6 64bit с PHP 5.4.12.
Это очень странное поведение PHP.
Смотрите следующий скрипт:
echo 'Trying Query: whereis jbig2dec<br>';
exec('whereis jbig2dec',$output) or die('Failed');
$location=explode(' ',implode($output));
$location=$location[1];
echo 'Result: '.implode($output)."<p>";
echo 'Trying Query: '.$location.' --help<br>';
exec($location.' --help',$output) or die('Failed');
echo 'Result: '.implode($output)."<p>";
echo 'Trying Query: jbig2dec --help<br>';
exec('jbig2dec --help',$output) or die('Failed');
echo 'Result: '.implode($output)."<p>";
Результат:
Trying Query: whereis jbig2dec
Result: jbig2dec: /usr/local/bin/jbig2dec
Trying Query: /usr/local/bin/jbig2dec --help
Failed
Вы можете видеть выше, что PHP-функция exec работает для whereis jbig2dec
но не работает для /usr/local/bin/jbig2dec --help
. НО, если я /usr/local/bin/jbig2dec --help
или jbig2dec --help
в SSH, я получаю правильный ответ от jbig2dec.
Как это могло произойти?