2017-01-05 26 views
0

は本当に何もするが、最小限のコードに問題があることを示していない/home/blakeh/test.py、です:なぜ、Python xmlrpc呼び出しでApacheを介して実行するとPermissionErrorが呼び出されますか?ここ

#!/usr/local/bin/python3 
import xmlrpc.client 
if __name__ == "__main__": 
    client = xmlrpc.client.ServerProxy('http://localhost:8010') 
    client.foo() 

私はApacheのユーザーとして直接これを実行すると、作ると何の権限の問題はありませんRPC "foo"呼び出し。私がからまでのApacheを実行した場合にのみ発生します。私はPython 3.5.2を使用しています。私はこれを持っているのApache .confファイルで

ScriptAlias /test "/home/blakeh/test.py" 

私はこのcurlコマンドを実行した場合:

curl -gix "" http://localhost/test 

をこれはに追加して...私は/、内部サーバーエラーを取得しますvar/log/httpd/error_log:

[Wed Jan 04 21:23:09 2017] [error] [client ::1] Traceback (most recent call last): 
[Wed Jan 04 21:23:09 2017] [error] [client ::1] File "/home/blakeh/test.py", line 7, in <module> 
[Wed Jan 04 21:23:09 2017] [error] [client ::1]  client.foo() 
[Wed Jan 04 21:23:09 2017] [error] [client ::1] File "/usr/local/lib/python3.5/xmlrpc/client.py", line 1092, in __call__ 
[Wed Jan 04 21:23:09 2017] [error] [client ::1]  return self.__send(self.__name, args) 
[Wed Jan 04 21:23:09 2017] [error] [client ::1] File "/usr/local/lib/python3.5/xmlrpc/client.py", line 1432, in __request 
[Wed Jan 04 21:23:09 2017] [error] [client ::1]  verbose=self.__verbose 
[Wed Jan 04 21:23:09 2017] [error] [client ::1] File "/usr/local/lib/python3.5/xmlrpc/client.py", line 1134, in request 
[Wed Jan 04 21:23:09 2017] [error] [client ::1]  return self.single_request(host, handler, request_body, verbose) 
[Wed Jan 04 21:23:09 2017] [error] [client ::1] File "/usr/local/lib/python3.5/xmlrpc/client.py", line 1146, in single_request 
[Wed Jan 04 21:23:09 2017] [error] [client ::1]  http_conn = self.send_request(host, handler, request_body, verbose) 
[Wed Jan 04 21:23:09 2017] [error] [client ::1] File "/usr/local/lib/python3.5/xmlrpc/client.py", line 1259, in send_request 
[Wed Jan 04 21:23:09 2017] [error] [client ::1]  self.send_content(connection, request_body) 
[Wed Jan 04 21:23:09 2017] [error] [client ::1] File "/usr/local/lib/python3.5/xmlrpc/client.py", line 1289, in send_content 
[Wed Jan 04 21:23:09 2017] [error] [client ::1]  connection.endheaders(request_body) 
[Wed Jan 04 21:23:09 2017] [error] [client ::1] File "/usr/local/lib/python3.5/http/client.py", line 1102, in endheaders 
[Wed Jan 04 21:23:09 2017] [error] [client ::1]  self._send_output(message_body) 
[Wed Jan 04 21:23:09 2017] [error] [client ::1] File "/usr/local/lib/python3.5/http/client.py", line 934, in _send_output 
[Wed Jan 04 21:23:09 2017] [error] [client ::1]  self.send(msg) 
[Wed Jan 04 21:23:09 2017] [error] [client ::1] File "/usr/local/lib/python3.5/http/client.py", line 877, in send 
[Wed Jan 04 21:23:09 2017] [error] [client ::1]  self.connect() 
[Wed Jan 04 21:23:09 2017] [error] [client ::1] File "/usr/local/lib/python3.5/http/client.py", line 849, in connect 
[Wed Jan 04 21:23:09 2017] [error] [client ::1]  (self.host,self.port), self.timeout, self.source_address) 
[Wed Jan 04 21:23:09 2017] [error] [client ::1] File "/usr/local/lib/python3.5/socket.py", line 711, in create_connection 
[Wed Jan 04 21:23:09 2017] [error] [client ::1]  raise err 
[Wed Jan 04 21:23:09 2017] [error] [client ::1] File "/usr/local/lib/python3.5/socket.py", line 702, in create_connection 
[Wed Jan 04 21:23:09 2017] [error] [client ::1]  sock.connect(sa) 
[Wed Jan 04 21:23:09 2017] [error] [client ::1] PermissionError: [Errno 13] Permission denied 

動作の違いを説明できますか?ありがとう!

+0

AppArmorまたはSELinuxがあるかどうかを確認してください。 'sudo apparmor_status; sudo sestatus -v' – Velkan

+0

ありがとう、それはselinuxがそれをブロックしていたことが判明し、 "setenforce 0"は私の周りを回避することができました。 – Blake

答えて

0

Velkanがselinuxをチェックするための提案が働いた。私は "setenforce 0"で許容モードにすることで、この作業を行うことができました。これを「回答」として追加することで、解決済みとマークすることができます。

関連する問題