我使用 shell_exec 方法从 PHP 调用 test.sh 。
$my_url="http://www.somesite.com/";
$my_refer="http://www.somesite.com/";
$page = shell_exec('/tmp/my_script.php $my_url $my_refer');
但是,命令行脚本表示它只收到 1 个参数:/tmp/my_script.php
当我将呼叫更改为:
Code:
$page = shell_exec('/tmp/my_script.php {$my_url} {$my_refer}');
它说它收到了 3 个参数,但 argv[1] 和 argv[2] 为空。
当我将呼叫更改为:
Code:
$page = shell_exec('/tmp/my_script.php "http://www.somesite.com/" "http://www.somesite.com/"');
该脚本最终按预期收到了所有 3 个参数。
您是否总是必须在脚本中发送仅带引号的文本,并且不允许发送像 $var 这样的变量?或者有什么特殊的方式必须发送 $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.'"');
还要确保使用escapeshellarg http://php.net/manual/en/function.escapeshellarg.php关于你们的价值观。
Example:
$my_url=escapeshellarg($my_url);
$my_refer=escapeshellarg($my_refer);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)