私はちょうどOSXにインストールされたPython用mySQLdbを手に入れました。コマンドラインからはうまく動作します。私はデータベースに何の問題も問いません。MySQLDBを_wwwユーザでOSXで動作させるには?
私が今しようとしているのは、system()関数を使ってPHPからpythonスクリプトを呼び出すことです。
このスニペット:「PYからこんにちは」
import MySQLdb
print "hello from py"
PHPシステム(から実行)PHPに「1」を返しますが、私は、コマンドラインから実行した場合には、出力します。私は)import文をコメントアウトし、(システムを使用して再度PHPによるスクリプトを実行場合、それは「PYからhello」を返し
したがって、私はMySQLdbはとは何かである必要があります確信しています。私はUNIXで非常に熟達しているわけではありませんが、私はそれがPHPが正しくないmySQLdbモジュールへの_wwwユーザーのアクセスと関係があるかもしれないと推測しています。
PHPにエラーを返すことができないため、トラブルシューティングが難しいです。
PythonのエラーメッセージをPHPに引き渡し、問題自体を解決するための正しい方法を教えてください。
EDIT:
いくつかのより良い情報:
私はこれにスニペットを変更:
print "before"
try:
import MySQLdb
except Exception,e:
print e
print "hello from py"
とPHPのexec(とそれを実行する)代わりに、システムの: exec('python /Users/Tapefreak/sites/a/testpy.py');
これはPHに出てきたものですP:
Pythonの卵のキャッシュにファイル(複数可)を抽出しようとしているときに次のエラーが発生した
卵のキャッシュにファイルを抽出できません:
[ERRNO 13]アクセス許可が拒否されました: '/Library/WebServer/.python-eggs'
ザ・パイソンの卵のキャッシュディレクトリが現在のように設定されます。
/Library/WebServer/.python-eggs
アカウントにはこのディレクトリへの書き込みアクセス権がありません。 PYTHON_EGG_CACHE 環境変数をアクセス可能なディレクトリに設定することで、キャッシュディレクトリを変更できます。
私はディレクトリを作成し、それをchownしました。
そして、スクリプトの出力が変更された:
のdlopen(/Library/WebServer/.python-eggs/MySQL_python-1.2.3b2-py2.6-macosx-10.6-universal.egg- tmp/_mysql。so、 2):ライブラリがロードされていません:libmysqlclient.18.dylib参照先: /Library/WebServer/.python-eggs/MySQL_python-1.2.3b2-py2.6-macosx-10.6-universal.egg-tmp/_mysql .soの 理由:画像はこれは私が以前に受けていたが、固定されたと思っていたメッセージである
が見つかりませんが - それは私だけのローカルユーザーのためではなく、WWWのためではなく、ルートのために修正されましたが判明しました。もう少しSO上で掘り
を(...私が学んだ、私と一緒にクマ)と私はシンボリックリンクを追加するには、この解決策が見つかりました:Python mysqldb: Library not loaded: libmysqlclient.18.dylib
私は/ usr/libに追加:
をのln -s /usr/local/mysql-5.5.16-osx10.6-x86_64/lib/libmysqlclient.18.dylib
libmysqlclient.18.dylibそして、それは今働いているように見えます。 PHPはMySQLdbを利用するPythonを実行できます。