2014-10-31 137 views
0

我有2個腳本。php不能用MySQLdb執行python腳本

1 - PHP網頁腳本,用於收集用戶的信息,併發送所有收集到的數據作爲參數執行python腳本

2 - Python腳本使用它從參數是sys.argv PHP腳本獲取參數和更新一個MySQL使用MySQLdb

當我通過命令行運行python腳本 - 它的作用就像一個魅力。它做它想做的任何事情。但是當我嘗試使用PHP腳本執行python腳本時 - 直到我從python腳本刪除導入MySQLdb時纔會發生任何事情。

只要從我的python腳本中刪除「導入MySQLdb」 - PHP腳本可以執行它並且它們都可以工作(除了更新MySQL)。

你有沒有想法出了什麼問題?

P.S. 我試圖得到一個錯誤

在Python文件我用這個:

import traceback 
import sys 
import MySQLdb 

# Some classes and functions 

if __name__ == '__main__': 
    try: 
     main() 
    except Exception, err: 
     print traceback.format_exc() 

,並在PHP中使用:

$result = shell_exec("/usr/bin/python /FULL_PATH_TO/script.py $argument"; 
echo $result; 

而且還是什麼都沒有。網頁只是重新加載而不提供任何信息

+0

「沒有任何反應」 - 您是否檢查了回溯? – mgilson 2014-10-31 06:31:12

+0

@mgilson更新了關於您的評論的主題 – 2014-10-31 06:53:16

+0

也許環境變量PYTHONPATH在由Web服務器執行時有所不同? PYTHONPATH指示python查找庫... – Paul 2014-10-31 06:57:24

回答

0

我遇到了同樣的問題。這裏的關鍵問題是你的python腳本不輸出任何東西!

並找出發生了什麼的關鍵是,你需要知道,這裏發生了一些錯誤,但你看不到錯誤輸出。你需要檢查這個問題: PHP script can't get output from Python script

這裏是簡短的回答:您需要執行並將錯誤輸出(標準錯誤)輸出到標準輸出。你需要這樣做: exec('python hello-numpy.py 2> & 1');

你會看到這個問題,它必須是MySQLDB庫需要一些被拒絕的權限。

如何獲得所需的權限,這是另一個問題:)