#python #python-3.x #subprocess #cgi
#python #python-3.x #подпроцесс #cgi
Вопрос:
У меня проблема при запуске подпроцесса в скрипте Python CGI.
Я собираюсь запустить файл python как подпроцесс в скрипте python CGI.
script.py
#!enable debugging
import cgitb
cgitb.enable()
print("Content-Type: text/html;charset=utf-8")
print()
import subprocess
p = subprocess.Popen(["sudo", "/usr/bin/python3", "test.py"], stdout=subprocess.PIPE)
test.py
f.open("test.txt", "a")
f.write("This is test")
f.close()
Если я запускаю script.py
в консоли, он успешно создает test.txt
файл.
Но если я запускаю его в браузере с помощью Python CGI, он не может быть создан test.txt
.
Я подумал, что это может быть вызвано разрешением, поэтому я попытался создать test.txt
в script.py
напрямую, а не на ‘test.py ‘, он создан успешно.
Итак, основная проблема в том, что скрипт Python CGI не может запустить подпроцесс.
Я не могу получить какую-либо ошибку при запуске в браузере в качестве скрипта Python CGI.
Как я могу исправить эту проблему?
Ответ №1:
Пожалуйста, если sudo не работает, посмотрите в системном журнале. Могут быть сообщения, которые помогут вам с отладкой. Файлы находятся в, /var/log
и если вы составите список по времени ls -t
, вы увидите, какие из них изменились только что.
Сначала попробуйте без sudo. Создайте свой файл в месте, где ему не требуется разрешение sudo, например /tmp/test.txt
. Тогда вы знаете, является ли проблема sudo или чем-то еще.
Комментарии:
1. Он успешно создан без
sudo
. Спасибо 🙂2. Возможно, вам вообще не нужен sudo при записи в «реальное» местоположение. Если вам действительно нужен sudo, то, возможно, вам нужна опция NOPASSWD. Вы можете узнать подробности в Google, если вам нужно. (На самом деле это не проблема Python.)
3. Я изменил разрешение на запись в каталог файлов для пользователя www-data на CRUD. Итак, его можно успешно создать без sudo?