我剛剛設法讓OSX上安裝Python的mySQLdb - 並從命令行工作正常。我可以查詢數據庫沒有問題。如何讓MySQLdb與_www用戶一起在OSX上工作?
我現在要做的是使用system()函數從PHP調用python腳本。
這個片斷:
import MySQLdb
print "hello from py"
從PHP系統運行時()返回「1」到PHP,但如果我在命令行中運行它,它打印出「你好,從PY」。如果我註釋掉導入語句,並使用system()再次通過PHP運行腳本,它將返回「hello from py」
因此,我確定它必須與MySQLdb有關。我並不是非常熟悉UNIX,但我猜測這可能與_www用戶通過PHP訪問mySQLdb模塊有關。
我不能讓它返回任何錯誤到PHP,所以很難排除故障。
一些幫助指出我在正確的方向,要麼:得到Python的錯誤信息到PHP,並自己解決問題,將不勝感激。
編輯:
一些更好的信息:
我改變了段將:
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病人:
不能解壓文件(S)到雞蛋緩存
出現以下錯誤,而試圖提取文件(S)到 的Python蛋緩存:
[錯誤13]權限被拒絕: '/Library/WebServer/.python-eggs'
Python的雞蛋緩存目錄當前設置爲:
/Library/WebServer/.python-eggs
也許您的帳戶沒有對此目錄的寫入權限? 您可以通過將PYTHON_EGG_CACHE 環境變量設置爲指向可訪問的目錄來更改高速緩存目錄。
所以,我創建了目錄,並將它變爲。
然後,腳本的輸出變更爲:
的dlopen(/Library/WebServer/.python-eggs/MySQL_python-1.2.3b2-py2.6-macosx-10.6-universal.egg- TMP/_mysql。所以, 2):未加載庫:libmysqlclient.18.dylib引用自: /Library/WebServer/.python-eggs/MySQL_python-1.2.3b2-py2.6-macosx-10.6-universal.egg-tmp/_mysql 。所以 原因:沒有找到圖片
這是我前面已經收到消息,但原以爲是固定的 - 原來它是固定只爲我的本地用戶,但不適用於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。