我正在尝试从php中执行cgi / python脚本,同时将cgi / python脚本传递给参数。
在我的php中我有
<? echo exec('/var/www/cgi-bin/test.cgi ' + $_POST["var"]); ?>
然而它不起作用,并且在apache日志中它显示'sh:0 not found'
此测试脚本非常简单:
#!/usr/bin/python
import cgi, sys, os
for arg in sys.argv:
print arg
答案 0 :(得分:2)
有人指出,PHP中的字符串连接运算符是.
,而不是+
。
“添加”非数字字符串的结果为0.这就是shell尝试运行命令“0”并返回错误:“sh:0 not found”的原因。
试试这个:
exec('/var/www/cgi-bin/test.cgi ' . escapeshellcmd($_POST["var"]));
另请注意,shell命令参数应使用escapeshellcmd进行转义。