Je suis bloqué sur un cas où les bibliothèques MySQL ne sont pas trouvées sur un serveur Apache/mod_wsgi/Django déployé, bien que Python seul puisse importer la bibliothèque correctement.
Voici les erreurs de mon journal Apache :
[Tue Jul 10 12:52:02 2012] [error] [client 127.0.0.1] File "/remote/projects1/pdrtke/python/lib/python2.6/site-packages/Django-1.3-py2.6.egg/django/utils/importlib.py", line 35, in import_module
[Tue Jul 10 12:52:02 2012] [error] [client 127.0.0.1] __import__(name)
[Tue Jul 10 12:52:02 2012] [error] [client 127.0.0.1] File "/remote/projects1/pdrtke/python/lib/python2.6/site-packages/Django-1.3-py2.6.egg/django/db/backends/mysql/base.py", line 14, in <module>
[Tue Jul 10 12:52:02 2012] [error] [client 127.0.0.1] raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
[Tue Jul 10 12:52:02 2012] [error] [client 127.0.0.1] ImproperlyConfigured: Error loading MySQLdb module: libmysqlclient_r.so.16: cannot open shared object file: No such file or directory
J'ai déjà essayé ce qui suit :
- Vérifiez que l'interpréteur Python peut faire
import MySQLdb
: Ok - Vérifiez que
python manage.py ...
les actions nécessitant un travail de soutien de la base de données : Ok - Vérifiez que
LD_LIBRARY_PATH
pointe vers un répertoire où libmysqlclient_r.so.16 est disponible : Ok - Attachez le
httpd
processus avecgdb
et faire unshow env
: Le siteLD_LIBRARY_PATH
Les points suivantslibmysqlclient_r.so.16
trop - Modifiez le
envvars
dans le répertoire bin/http pour ajouter un fichierexport LD_LIBRARY_PATH=...
(juste au cas où) : Ok - Contrôle par un
ldd libmysqlclient_r.so.16
que la bibliothèque elle-même ne contient pas de dépendances non résolues - Vérifiez que le
httpd
n'a pas le bit setuid activé, ce qui est une raison documentée d'ignorer l'indicateur d'intégrité de l'exécution.LD_LIBRARY_PATH
: Ok
Aucune de ces actions ne semble résoudre mon problème. Y a-t-il un élément évident que j'ai oublié de prendre en compte ?