I am calling test.sh from PHP using shell_exec method.
$my_url="http://www.somesite.com/";
$my_refer="http://www.somesite.com/";
$page = shell_exec('/tmp/my_script.php $my_url $my_refer');
However, the command line script says it only received 1 argument: the /tmp/my_script.php
When i change the call to:
Code:
$page = shell_exec('/tmp/my_script.php {$my_url} {$my_refer}');
It says it received 3 arguments but the argv[1] and argv[2] are empty.
When i change the call to:
Code:
$page = shell_exec('/tmp/my_script.php "http://www.somesite.com/" "http://www.somesite.com/"');
The script finally receives all 3 arguments as intended.
Do you always have to send just quoted text with the script and are not allowed to send a variable like $var? Or is there some special way you have to send a $var?
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);