Error while executing exec('php -v') in php returning garbage (HTTP Response)
exec, linux, php, shared-hosting
Solution
Its PHP CGI which reads script name from the environment thus causing calling script to run multiple or sometimes infinite number of times.
The solution is simply using command php-cli instead of command php.
replaced line `$command = 'php -m';` with `$command = 'php-cli -m';` on your code and everything will work fine.
Problem
I've a shared server Linux based on which I am facing a weird problem. I am trying to execute by PHP, the following command and it runs ok; returning me the PHP install path `/usr/bin/php`. ``` exec('which php');// This runs so exec is not disabled ``` but any command i try to execute with `exec('php ...');` fails returning me an array of 98 to 114 elements randomly which almost has garbage all over. Examples of commands i ran are... ``` exec('php -v'); exec('php -i'); exec('/usr/bin/php -v'); ``` None of the above returned something sensible. Any idea why any command ran by php is not executing? Below is the `var_dump()` of the data array that `exec()` is returning to me. EDIT (After some more RND) I was able to execute ``` exec('php -h') ``` and it reuturned me the following array in readable format. ``` string(9) "php -help" string(47) "Usage: php [-q] [-h] [-s] [-v] [-i] [-f ]" string(27) " php [args...]" string(36) " -a Run interactively" string(69) " -b | Bind Path for external FASTCGI Server mode" string(57) " -C Do not chdir to the script's directory" string(58) " -c | Look for php.ini file in this directory" string(47) " -n No php.ini file will be used" string(56) " -d foo[=bar] Define INI entry foo with value 'bar'" string(70) " -e Generate extended information for debugger/profiler" string(46) " -f Parse . Implies `-q'" string(28) " -h This help" string(34) " -i PHP information" string(43) " -l Syntax check only (lint)" string(43) " -m Show compiled in modules" string(60) " -q Quiet-mode. Suppress HTTP Header output." string(60) " -s Display colour syntax highlighted source." string(33) " -v Version number" string(72) " -w Display source with stripped comments and whitespace." string(46) " -z Load Zend extension ." string(75) " -T Measure execution time of script repeated times." This page was created in 0.055487155914307 seconds ``` Oh btw the script i am using to test is the following... ``` <?php $mtime = microtime(); $mtime = explode(" ",$mtime); $mtime = $mtime[1] + $mtime[0]; $starttime = $mtime; if(!empty($_GET['p']) && $_GET['p'] == true){ //$command = 'php -help'; //this works //$command = 'cat ' . getcwd() . '/dummy1.txt'; //this works echo's a simple text file //$command = 'php -q ' . getcwd() . '/dummy1.txt'; //NOT WORKING $command = 'php -m'; //NOT WORKING echo '<div><pre>'; var_dump($command); echo '</pre></div>'; exec($command, $output, $return); //passthru($command,$output); echo '<div><pre>'; foreach($output as $key => $value){ var_dump($output[$key]); } echo '</pre></div>'; } $mtime = microtime(); $mtime = explode(" ",$mtime); $mtime = $mtime[1] + $mtime[0]; $endtime = $mtime; $totaltime = ($endtime - $starttime); echo "This page was created in ".$totaltime." seconds"; ?> ``` Pastebin.org Link