我以为我在我们的服务器(Ubuntu 16.04)上放了一个小脏脚本,它给了我一些Python的纯文本输出.
我想从PHP调用这样的脚本(我知道应该有一些转义,但它只是一个测试):
<?PHP
$command = '/usr/local/bin/script.py';
$output = shell_exec($command);
echo $output;
?>
这是由www-data模式774拥有的script.py
#!/usr/bin/python
import CoolProp.CoolProp as CP
import argparse
print('Hallo Welt')
如果我注释掉CoolProp导入它的工作原理.但不知何故,www-data无法访问包,因此脚本不会返回任何内容.
如您所见,我想使用Package CoolProp.
>所以我尝试用pip install安装它CoolProp =>这适用于我的本地用户.但现在从用户www-data调用时
>我尝试使用目标–target = /usr/local/lib / site-packages /安装它后,但这没有帮助.
>我尝试将完整的site-packages /上的ACL更改为rwx
对于www-data但不起作用.
最后:pip安装包可以被包括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数据使用.还有另一种方法,但它涉及一些更脏的hackery.有关详细信息,请查看我的问题/答案@ How do I properly call a Python Pyro client using PHP and Apache web server?