我以为我在我们的服务器(Ubuntu 16.04)上放了一个肮脏的脚本,该脚本为我提供了一些来自Python的纯文本输出。

我想从PHP调用这样的脚本(我知道应该做一些转义,但这只是目前的测试):

<?php
$command = '/usr/local/bin/script.py';
$output = shell_exec($command);
echo $output;
?>

这是www数据模式script.py拥有的774
#!/usr/bin/python
import CoolProp.CoolProp as CP
import argparse
print('Hallo Welt')

如果我注释掉CoolProp导入,它将起作用。但是www-data无法以某种方式到达该程序包,因此该脚本不返回任何内容。

如您所见,我想使用CoolProp包。
  • 因此,我尝试使用pip install CoolProp =>进行安装,该方法适用于本地用户。但是现在当从用户www-data
  • 调用时
  • 在尝试使用目标--target=/usr/local/lib/site-packages/安装它后,此操作无济于事。
  • 我试图将完整site-packages/上的ACL更改为rwx用于www数据,但效果不佳。

  • 最后:pip install一个可以被包括www-data在内的所有用户使用的软件包的最简单方法是什么?

    最佳答案

    我建议您尝试使用 xotihcan 首先发布的解决方案,因为这是使大多数 python模块对所有用户(包括www-data)可用的简便方法。但是,它不适用于每个 python模块的。如果这对您不起作用,或者您只想为www-data用户安装模块,则使用以下命令:

    sudo mkdir /var/www/.local
    sudo mkdir /var/www/.cache
    sudo chown www-data.www-data /var/www/.local
    sudo chown www-data.www-data /var/www/.cache
    sudo -H -u www-data pip install CoolProp
    

    我在尝试使Python pyro4模块可用于www-data时遇到了同样的问题。还有另一种方法可以做到,但是它甚至涉及一些更脏的黑客。有关更多详细信息,请查看我的问题/答案@ How do I properly call a Python Pyro client using PHP and Apache web server?

    关于php - 如何安装Python软件包以供所有用户全局使用(包括www-data),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39471295/

    10-12 15:00
    查看更多