2014-07-09 82 views
0

在我的問題的根源,我試圖從PHP腳本內調用Python腳本。我是一個共享的服務器上,與Python的多個版本安裝:從PHP中的系統函數調用特定的Python版本

/usr/bin/python -V ... 2.6 
/home/tony/python/python -V ... 2.7 
/home/tony/python/Python-3.2/python ... 3.2 

echo $PATH ... /home2/tony/python/Python-3.2/ 
echo $PYTHONPATH... /home2/tony/python/lib/python3.2/site-packages 

我也取得了Unix的一個別名:

alias python3='/home2/tony/python/Python-3.2/python' 

下面是Python腳本(test.py)內容:

#!/usr/bin/python 

import sys 

print 'Python version:', sys.version_info 

下面是PHP腳本(test.php的)內容:

<?php 

$py_script = "test.py"; 
$py_args = "name1=value1++name2=value2"; 

system('python ' . $py_script . ' ' . $py_args, $retval); 

// $retval will have a trailing 0 or 1 at the end 

$retval = trim($retval, "0 1"); 

echo $retval; 

?> 

但是當我在瀏覽器中點擊test.php時,我仍然可以看到版本2.6。我不知道我必須改變我的腳本中的哪一部分來強制使用上面的Python 3.2(我需要2.6中無法處理的3.2中的功能/模塊)。任何幫助,將不勝感激!

+0

無法你'system('/ home2/tony/python/Python-3.2/python')'?並檢查'/ usr/bin/python3 -V'。 – furas

回答

0

您可以使用別名作爲Web服務器運行的(在Debian或Ubuntu通常www數據)

alias python3='/home2/tony/python/Python-3.2/python' 

改變你的PHP用戶

<?php 

$py_script = "test.py"; 
$py_args = "name1=value1++name2=value2"; 

system('/home/tony/python/Python-3.2/python ' . $py_script . ' ' . $py_args, $retval); 

// $retval will have a trailing 0 or 1 at the end 

$retval = trim($retval, "0 1"); 

echo $retval; 

?> 
+0

非常感謝!我找不到第一條建議(使用別名作爲用戶),但通過放置3.2版的完整路徑,我可以使用該版本。我不知道爲什麼它以前沒有工作。謝謝!! –

相關問題