免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7138 | 回复: 12
打印 上一主题 下一主题

python CGI服务器os.execve(scriptfile,args,os.environ)报错,不是权限的问题噢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-27 10:36 |只看该作者 |倒序浏览
描述如下:
创建/usr/local/lib/python2.6/toc/pyserver.py 文件,内容如下:
from CGIHTTPServer import CGIHTTPRequestHandler
from BaseHTTPServer import HTTPServer      
server_address=('',8081)
httpd = HTTPServer(server_address, CGIHTTPRequestHandler)
httpd.serve_forever()

创建/usr/local/lib/python2.6/toc/cgi-bin/test.py,内容如下:
#!/usr/local/bin/python

print "HTTP/1.0 200 OK"
print "Content-Type: text/html"
print  
print "<p>"
print "Hello World!"
print "</p>"

然后在/usr/local/lib/python2.6/toc/下运行python pyserver.py这时没有报错,然后在浏览器里输入
http://localhost:8081/cgi-bin/test.py,此时浏览器弹出一个叫下载test.py的框.
再看终端里面的显示报错,内容如下:

localhost - - [26/May/2010 17:05:32] "GET /cgi-bin/test.py HTTP/1.1" 200 -   
Traceback (most recent call last):   
  File "/usr/local/lib/python2.6/CGIHTTPServer.py", line 255, in run_cgi   
    os.execve(scriptfile, args, os.environ)   
OSError: [Errno 2] No such file or directory

于是我在文件CGIHTTPServer.py里面加了些打印信息,发现在run_cgi中走到os.dup2(self.rfile.fileno(), 0)完了以后
就卡在了os.dup2(self.wfile.fileno(), 1)这句上,第二句打印信息就没有打印出来
os.dup2(self.rfile.fileno(), 0)
print "11111----run_cgi-----"           
os.dup2(self.wfile.fileno(), 1)
print "222222222----run_cgi-----"
os.execve(scriptfile, args, os.environ)


我查了好些都是在说没有权限的问题,如果是没有权限的话应该是报OSError: [Errno 13] Permission denied 的错。
实在找不到原因了,请各位达人帮帮我,谢谢了

论坛徽章:
0
2 [报告]
发表于 2010-05-27 10:50 |只看该作者
我测试时可以的,我的python版本是2.5.5.7,rt:

论坛徽章:
0
3 [报告]
发表于 2010-05-27 10:53 |只看该作者
是不是权限的问题   你改改权限不就知道了。
另外你知道dup2是什么意思么?你认为os.dup2(self.wfile.fileno(), 1)这个执行完了,后面的print的内容有可能打印出来么?

论坛徽章:
0
4 [报告]
发表于 2010-05-27 10:54 |只看该作者
我的是python2.6.2,难不成和python的版本有关吗,奇怪啊

论坛徽章:
0
5 [报告]
发表于 2010-05-27 10:56 |只看该作者
你用的是WINDOWS吗,我是要在LINUX下跑的呢

论坛徽章:
0
6 [报告]
发表于 2010-05-27 10:58 |只看该作者
发现在run_cgi中走到os.dup2(self.rfile.fileno(), 0)完了以后
就卡在了os.dup2(self.wfile.fileno(), 1)这句上,第二句打印信息就没有打印出来
os.dup2(self.rfile.fileno(), 0)
print "11111----run_cgi-----"           
os.dup2(self.wfile.fileno(), 1)
print "222222222----run_cgi-----"[/img][/url]


认真想想问题是出在第二个dup2么?第二个print有可能在终端看到输出么?然后再想问题可能出在哪儿。

论坛徽章:
0
7 [报告]
发表于 2010-05-27 10:58 |只看该作者
我的是python2.6.2,难不成和python的版本有关吗,奇怪啊
mirage_o 发表于 2010-05-27 10:54



    至少能排除是程序错误,我在两个文件第一行都加了#coding=utf-8

论坛徽章:
0
8 [报告]
发表于 2010-05-27 11:03 |只看该作者
找不到文件你在CGIHTTPServer.py里面输出下sys.path看看是什么?

论坛徽章:
0
9 [报告]
发表于 2010-05-27 11:04 |只看该作者
本帖最后由 luffy.deng 于 2010-05-27 11:07 编辑
发现在run_cgi中走到os.dup2(self.rfile.fileno(), 0)完了以后
就卡在了os.dup2(self.wfile.fileno(), 1)这句上,第二句打印信息就没有打印出来[/img][/url]

最基础的知识都没搞清楚,就下这种结论。去好好研究一下dup2  再分析原因吧。这个错误分明是execve(scriptfile, args, os.environ)  报的,你却认为卡os.dup2(self.wfile.fileno(), 1)
上。

论坛徽章:
0
10 [报告]
发表于 2010-05-27 11:17 |只看该作者
回复 8# t6760915
sys.path  里加上 /usr/local/lib/python2.6/toc/cgi-bin 十有八九就好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP