是否有解决urllib2.urlopen的“权限被拒绝”的错误?

我正在运行一些使用urllib2.urlopen Python代码, urllib2.urlopen以用户( root (Linux)的身份运行时工作正常。

但是,当以用户apache运行(我们通过apache版本1运行)时,它不起作用 – 我得到这个错误:

 Traceback (most recent call last): File "/srv/www/vm/custom/ipn.py", line 118, in ? a = confirm_paypal(f, f1) File "/srv/www/vm/custom/ipn.py", line 47, in confirm_paypal response = urllib2.urlopen(PP_URL, params) File "/usr/lib64/python2.4/urllib2.py", line 130, in urlopen return _opener.open(url, data) File "/usr/lib64/python2.4/urllib2.py", line 358, in open response = self._open(req, data) File "/usr/lib64/python2.4/urllib2.py", line 376, in _open '_open', req) File "/usr/lib64/python2.4/urllib2.py", line 337, in _call_chain result = func(*args) File "/usr/lib64/python2.4/urllib2.py", line 1040, in https_open return self.do_open(httplib.HTTPSConnection, req) File "/usr/lib64/python2.4/urllib2.py", line 1006, in do_open raise URLError(err) URLError: <urlopen error (13, 'Permission denied')> 

有没有办法让用户, apache ,访问这个function?

更新1

运行Python 2.4.3和Apache 2.2.3

我不确定答案是什么,但我想我会尝试像这样解决问题。

使用su切换到apache用户上下文,然后用strace运行python脚本。 我猜测它试图访问一个文件或创build一个临时文件或某处。

如果我想做一个疯狂的猜测,我会看到,似乎你正在尝试使用https。 也许它试图加载CA证书并且无法访问?

它不作为apache用户运行,您的python脚本是否会以不同的非root用户身份运行?

原来SELinux正在停止使用端口的Apache; closuresSELinux之后,问题就消失了。