sys.argv 从 shell_exec 传递的变量被缩短了
sys.argv variable passed from shell_exec got shortened
当我想从 php shell_exec() 执行我的 python 脚本时,我遇到了很多麻烦,正如标题所说
这是我的代码
exec.php
<?php
$my_url="http://reviews.femaledaily.com/moisturizer-36/lotions/nature-republic/aloe-vera-92-soothing-gel-06?tab=reviews&cat=&cat_id=0&age=&order=nrd&page=1";
echo shell_exec("python hello.py '".$my_url."'");
?>
hello.py
import sys
x = sys.argv[1]
print(x)
输出
'http://reviews.femaledaily.com/moisturizer-36/lotions/nature-republic/aloe-vera-92-soothing-gel-06?tab=reviews
我希望从输出中得到什么
'http://reviews.femaledaily.com/moisturizer-36/lotions/nature-republic/aloe-vera-92-soothing-gel-06?tab=reviews&cat=&cat_id=0&age=&order=nrd&page=1'
有什么解决办法吗?或者我应该把它分成 2 个参数?
使用 escapeshellarg()
将参数正确转义为命令。
echo shell_exec("python hello.py " . escapeshellarg($my_url));
当我想从 php shell_exec() 执行我的 python 脚本时,我遇到了很多麻烦,正如标题所说
这是我的代码
exec.php
<?php
$my_url="http://reviews.femaledaily.com/moisturizer-36/lotions/nature-republic/aloe-vera-92-soothing-gel-06?tab=reviews&cat=&cat_id=0&age=&order=nrd&page=1";
echo shell_exec("python hello.py '".$my_url."'");
?>
hello.py
import sys
x = sys.argv[1]
print(x)
输出
'http://reviews.femaledaily.com/moisturizer-36/lotions/nature-republic/aloe-vera-92-soothing-gel-06?tab=reviews
我希望从输出中得到什么
'http://reviews.femaledaily.com/moisturizer-36/lotions/nature-republic/aloe-vera-92-soothing-gel-06?tab=reviews&cat=&cat_id=0&age=&order=nrd&page=1'
有什么解决办法吗?或者我应该把它分成 2 个参数?
使用 escapeshellarg()
将参数正确转义为命令。
echo shell_exec("python hello.py " . escapeshellarg($my_url));