Je pensais lancer un petit script sale sur notre serveur (Ubuntu 16.04), ce qui me permet de générer du texte en clair à partir de Python.
Je veux appeler le script comme ceci à partir de PHP (je sais qu’il devrait y avoir des échappées, mais ce n’est qu’un test actuellement):
Ceci est script.py
détenu par le mode www-data 774
#!/usr/bin/python import CoolProp.CoolProp as CP import argparse print('Hallo Welt')
Si je commente l’importation de CoolProp
cela fonctionne. Mais de toute façon, le paquet ne peut pas être atteint par www-data
et le script ne renvoie donc rien.
Comme vous le voyez, je souhaite utiliser le package CoolProp
.
pip install CoolProp
=> Cela fonctionne pour mon utilisateur local. Mais maintenant, quand on appelle depuis l’utilisateur www-data
--target=/usr/local/lib/site-packages/
mais cela n’a pas aidé. site-packages/
à rwx
pour www-data mais cela ne fonctionne pas aussi bien. Au final: Quel est le moyen le plus simple d’ pip install
un paquet pouvant être utilisé par tous les utilisateurs, y compris www-data
?
Je vous recommande d’essayer la solution que xotihcan a publiée en premier car il s’agit du moyen simple de rendre la plupart des modules python disponibles à tous les utilisateurs, y compris www-data. Cependant, cela ne fonctionne pas pour tous les modules python. Si cela ne fonctionne pas pour vous ou si vous voulez simplement installer des modules pour l’utilisateur de www-data uniquement, utilisez les commandes suivantes:
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
J’ai eu ce même problème en essayant de rendre le module Python pyro4 disponible pour l’utilisation de www-data. Il y a une autre façon de le faire, mais cela implique un piratage encore plus sale. Pour plus de détails, consultez ma question / réponse @ Comment appeler correctement un client Python Pyro à l’aide du serveur Web PHP et Apache?
Exécutez PIP avec l’utilisateur root.
Cela devrait résoudre le problème.