Использование импортированного модуля в python приводит к ошибке отказа в доступе - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь использовать импортированный модуль (pylightning) в скрипте Python, который запускается с использованием apache под пользователем www-data.

Скрипт выдает ошибку разрешения при запуске через apache от имени пользователя www-data:

File "/usr/local/lib/python3.4/dist-packages/lightning/lightning.py", line 69, in call
sock.connect(self.socket_path)
PermissionError: [Errno 13] Permission denied

Чтобы исправить это, я интенсивно искал и обнаружил, что мне нужно переустановить модуль как пользователь www-data:

sudo pip3 uninstall pylightning
sudo -H -u www-data pip3 install pylightning

Скрипт по-прежнему работает без проблем из CLI как обычный пользователь:

$python3 index.py
Content-Type: text/html


<html><body>
etc...

Но из apache (через браузер или из командной строки, как пользовательские www-данные) все равно выдает ту же ошибку:

$sudo -u www-data python3 /var/www/html/index.py
Content-Type: text/html


<html><body>
Traceback (most recent call last):
File "/var/www/html/index.py", line 29, in <module>
print(rpc_interface.listpeers())
File "/usr/local/lib/python3.4/dist-packages/lightning/lightning.py", line 345, in listpeers
return self.call("listpeers", payload)
File "/usr/local/lib/python3.4/dist-packages/lightning/lightning.py", line 69, in call
sock.connect(self.socket_path)
PermissionError: [Errno 13] Permission denied

У кого-нибудь есть идеи?

Источник скрипта:

#!/usr/bin/env python3

import hashlib
from lightning.lightning import LightningRpc

rpc_interface = LightningRpc("/home/pi/.lightning/lightning-rpc")
print ("Content-Type: text/html\n\n");
print ("</body></html>asd");
print(rpc_interface.listpeers())

ошибка срабатывает в этой строке: печать (rpc_interface.listpeers ())

1 Ответ

0 голосов
/ 30 августа 2018

Убедитесь, что у пользователя www-данных есть разрешение на доступ к /home/pi/.lightning/lightning-rpc (включая родительские каталоги).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...