zoddak
@zoddak
Осваиваю vue.js

Как исправить ошибку «vncserver: The HOME environment variable is not set» — запустить скрипт Python из PHP от имени пользователя?

Скрипт на Python запускаю из PHP. Скрипт запускается нормально, но доходя до строчек запуска vncserver - не может его запустить:
#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-

import time
import requests
from datetime import datetime
from pymongo import MongoClient
from multiprocessing import Pool
import json
import math 
import subprocess
import os
SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
.
.
.
    ## VNC Display checks
    # Configure DISPLAY variable to VNC
    os.environ["DISPLAY"] = cfg["vnc_display"]
    if os.system("xhost >& /dev/null"):
        print("WARNING: No VNC display opened under %s. Running VNC Server and trying again" % (os.environ["DISPLAY"]))
        os.system("vncserver %s" % (os.environ["DISPLAY"]))
        time.sleep(5)
        if os.system("xhost >& /dev/null"):
            print("ERROR: No VNC display opened under %s. Cannot continue" % (os.environ["DISPLAY"]))
            return
.
.
.
if __name__ == "__main__":
    command_line_runner()

..вываливает ошибку:
vncserver: The HOME environment variable is not set
No VNC display opened under :1.
Running VNC Server and trying again.
ERROR: No VNC display opened under :1.
Cannot continue.


Как я понимаю vncserver не хочет запускаться с правами пользователя Apache, а только из под пользователя - ошибка связана с правами на исполнение. Т.к. если запускать скрипт напрямую, в командной строке, от имени пользователя - ошибок нет и все работает нормально.
ВОПРОС: как запустить скрипт Python из PHP от имени пользователя и добиться запуска vncserver?
Я думаю что все таки нужно как то научить скрипт работать правильно с правами Apache, но не знаю как это сделать. Предложите пожалуйста варианты решения. Спасибо.
  • Вопрос задан
  • 294 просмотра
Решения вопроса 1
zoddak
@zoddak Автор вопроса
Осваиваю vue.js
Сделал так:
.
.
.
from os.path import expanduser
HOME = expanduser("~")
.
.
.
os.environ["HOME"] = HOME
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы