2 回答
TA贡献1852条经验 获得超1个赞
您的问题是用户权限问题。您应该以拥有您的 python 环境的用户身份运行 Apache 服务器,或者允许运行服务器的用户在您的 python 环境中执行权限。
这个答案应该可以帮助您找出服务器的最佳设置。
另请阅读有关Apache VirtualHosts 配置的信息
TA贡献1858条经验 获得超8个赞
我想通了。希望这将帮助任何有类似问题的人。当您从 Apache 服务器上提供的 PHP 脚本执行 Python 或 shell 脚本时,该脚本将以用户身份运行,默认情况下为 www-data。
通过运行命令 sudo -u www-data(以 www-data 用户运行以下命令)python myscript.py,我得到了一个回溯错误,提示找不到第 3 方模块。发生的情况是,默认情况下 pip(python 包管理器)在用户级别安装其包。这对大多数应用程序来说都很好,但在这种情况下会导致问题,因为 www-data 用户可以理解地找不到已安装的包,并且脚本崩溃了。从 PHP 脚本的角度来看,这变得特别棘手,因为它不理解这一点并且输出只是 null。
我知道不推荐使用 sudo 安装 pip 包,因为它在某些情况下会导致冲突问题;但是,这是解决大多数软件包问题的最简单方法。对于这不起作用的情况,请查看 infinigrove 的答案: 如何安装 Python 包以供所有用户全局使用(包括 www-data)
最后,从我所见,为了以 www-data 用户(sudo -u www-data pip install package)安装 pip 包,必须授予 www-data sudo 权限,这绝对不是推荐的解决方案.
添加回答
举报
