OSX LionでMySQLdbを使用しているPythonスクリプトがあります。 MySQLdbを動作させるには、〜/ .bash_profileにPATH変数をApacheに提供するには? (OSX Lion)
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH
を追加する必要がありました。 pythonスクリプトは、コマンドラインから実行するとうまくいきます。
exec()関数を使用してPHPスクリプトから同じpythonスクリプトを実行しようとすると、pythonスクリプトはライブラリパスを見つけることができません。ここでは、Apacheのログからのerr msgがあります:
ImportError: dlopen(/Library/Python/2.7/site-packages/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
Referenced from: /Library/Python/2.7/site-packages/_mysql.so
Reason: image not found
私はこれを仮定している私はそれを修正する方法については不明だけれども、ユーザの問題です。
このパスは、マシン上のすべてのスクリプトとユーザーがグローバルに使用できるようにする必要がありますか。 (少なくとも、ApacheとRootに)
さらに詳しい情報/説明:ターミナルからroot以外の通常のユーザーとしてpythonを実行すると、 "import MySQLdb"が動作します。私がsudoして同じことをしようとすると、私はエラーが発生します。したがって、問題はユーザーのスコープの1つでなければなりません。 DYLD_LIBRARY_PATHを適切な場所にエクスポートしてすべてのユーザーが利用できるようにすることで、Pythonの外部でこれを解決したいと思いますが、どこでどのように行うのかはわかりません。 – Tapefreak
'/ etc/bash.bashrc' – Gandaro