2011-10-20 38 views
0

我剛剛設法讓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。

回答

0

如上所述,將/usr/lib中的符號鏈接添加到/usr/local/mysql-5.5.16-osx10.6-x86_64/lib/libmysqlclient.18.dylib爲我解決了這個問題。希望這對其他人有用。

0

檢查您的apache錯誤日誌中是否有錯誤。 另外,請嘗試su_ing到_www並手動執行腳本。

相關問題