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));