【发布时间】:2018-05-22 15:27:49
【问题描述】:
我正在尝试使用 用 Python 编写的 CGI 脚本 来执行 bash 脚本,但是它只有在我手动运行脚本 python 时才能正常工作。当我通过浏览器运行时,CGI 执行返回 200,但是 bash 脚本没有运行。
这是我正在尝试做的一个示例,但使用两个简单的脚本来解释,好吗?
cgi 脚本是在以下 apache 目录中创建的,可以毫无问题地访问: /var/www/cgi-bin/raf_teste.cgi
以下是 raf_teste.cgi 脚本的内容:
#!/usr/bin/python3.5
import subprocess
import cgi, cgitb
cgitb.enable()
print ("Content-type:text/html\r\n\r\n")
command = ['./raf.sh']
subprocess.Popen(command)
在同一目录 "/var/www/cgi-bin/" 中创建了一个名为 raf.sh 的 BashScript: /var/www/cgi-bin/raf.sh
下面是raf.sh脚本的内容:
#!/bin/bash
echo "rafael" > "/tmp/rafael.txt"
注意:在我使用 python 子进程模块运行 linux 命令的测试中,一切正常,但在这种情况下,我试图通过 python CGI 运行另一个脚本,它不是正常工作,没有显示错误消息。
你能帮帮我吗?
【问题讨论】:
-
你确定网络服务器没有自己的私人
/tmp? -
运行 Web 服务器的用户是否可以执行
raf.sh? -
@IgnacioVazquez-Abrams 我已经尝试过其他具有 777 权限的目录,即使这样它也无法写入,也没有给我错误消息。我已经测试了好几天了。
-
@rbricheno 我在 raf.sh 脚本上设置了 777 权限