Passing multiple PHP variables to shell_exec()? [duplicate]
Change
$page = shell_exec('/tmp/my_script.php $my_url $my_refer');
to
$page = shell_exec("/tmp/my_script.php $my_url $my_refer");
OR
$page = shell_exec('/tmp/my_script.php "'.$my_url.'" "'.$my_refer.'"');
Also make sure to use escapeshellarg
on both your values.
Example:
$my_url=escapeshellarg($my_url);
$my_refer=escapeshellarg($my_refer);
There is need to send the arguments with quota so you should use it like:
$page = shell_exec("/tmp/my_script.php '".$my_url."' '".$my_refer."'");
Variables won't interpolate inside of a single quoted string. Also you should make sure the your arguments are properly escaped.
$page = shell_exec('/tmp/myscript.php '.escapeshellarg($my_url).' '.escapeshellarg($my_refer));
Change
$page = shell_exec('/tmp/my_script.php $my_url $my_refer');
to
$page = shell_exec('/tmp/my_script.php "'.$my_url.'" "'.$my_refer.'"');
Then you code will tolerate spaces in filename.
You might find sprintf
helpful here:
$my_url="http://www.somesite.com/";
$my_refer="http://www.somesite.com/";
$page = shell_exec(sprintf('/tmp/my_script.php "%s" "%s"', $my_url, $my_refer));
You should definitely use escapeshellarg
as recommended in the other answers if you're not the one supplying the input.