use*_*387 19 php shell shell-exec
我使用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');
Run Code Online (Sandbox Code Playgroud)
但是,命令行脚本说它只收到一个参数:/tmp/my_script.php
当我将呼叫更改为:
码:
$page = shell_exec('/tmp/my_script.php {$my_url} {$my_refer}');
Run Code Online (Sandbox Code Playgroud)
它说它接收了3个参数,但是argv [1]和argv [2]是空的.
当我将呼叫更改为:
码:
$page = shell_exec('/tmp/my_script.php "http://www.somesite.com/" "http://www.somesite.com/"');
Run Code Online (Sandbox Code Playgroud)
该脚本最终按预期接收所有3个参数.
您是否始终只需使用脚本发送带引号的文本,并且不允许发送像$ var这样的变量?或者有一些特殊的方式你必须发送$ var?
Dav*_*hen 22
更改
$page = shell_exec('/tmp/my_script.php $my_url $my_refer');
至
$page = shell_exec("/tmp/my_script.php $my_url $my_refer");
要么
$page = shell_exec('/tmp/my_script.php "'.$my_url.'" "'.$my_refer.'"');
还要确保escapeshellarg在两个值上都使用.
例:
$my_url=escapeshellarg($my_url);
$my_refer=escapeshellarg($my_refer);
Run Code Online (Sandbox Code Playgroud)
Cod*_*ver 15
需要使用配额发送参数,因此您应该使用它:
$page = shell_exec("/tmp/my_script.php '".$my_url."' '".$my_refer."'");
Run Code Online (Sandbox Code Playgroud)
Ora*_*ill 10
变量不会在单个带引号的字符串内插入.此外,您应确保正确转义您的参数.
$page = shell_exec('/tmp/myscript.php '.escapeshellarg($my_url).' '.escapeshellarg($my_refer));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58673 次 |
| 最近记录: |