如何修复错误“vncserver:未设置HOME环境变量”——代表用户从 PHP 运行 Python 脚本?

如何修复错误“vncserver:未设置HOME环境变量”——代表用户从 PHP 运行 Python 脚本?

** 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:未设置 HOME 环境变量
未在 :1 下打开 VNC 显示器。
正在运行 VNC 服务器并重试。
错误:未在 :1 下打开 VNC 显示器。
无法继续。

据我了解,** vncserver ** 不想以用户权限 ** Apache ** 启动,而只能以用户权限启动 - 错误与执行权限有关。因为如果您直接在命令行上代表用户运行脚本 - 则不会出现任何错误,一切正常。我想我需要以某种方式教脚本以 ** Apache ** 权限正确运行,但我不知道该怎么做。请提出解决方案。谢谢。

答案1

添加以下代码行后,一切都开始按需要工作:

.
.
.
from os.path import expanduser
HOME = expanduser("~")
.
.
.
os.environ["HOME"] = HOME

帮助提示: 大卫·波斯蒂尔阿纳克苏纳曼

相关内容