我在将参数从php传递给python时遇到了问题。
使用$ _SERVER ['QUERY_STRING']。
http://www.domain.com/path?a_num=123&msg=hello
我会将 a_num = 123& msg = hello 添加到变量
$a = $_SERVER['QUERY_STRING'];
system("python python.py ".$a);
并在python中打印它
a = sys.argv[1]
print a
,结果只有 * a_num = 123 *
问题是什么?
答案 0 :(得分:1)
我不认为这是PHP的问题,更多的是如何执行系统命令。假设您使用的是Linux,那么'&'命令中的字符:
python python.py a_num=123&msg=hello
被解释为控制操作符。从bash的文档(尽管这同样适用于其他shell,如tcsh):
如果命令由控制操作符&终止,则shell在子shell中在后台执行命令。外壳确实如此 不要等待命令完成,返回状态为0。
为了防止这种情况,您需要引用传递的字符串:
python python.py "a_num=123&msg=hello"
PHP中的内容如下:
system("python python.py \"".$a."\"");