2011-02-27 72 views
3

嘿亞勒。我在Dreamhost的webserver上運行python。我使用他們的安裝python的和正在使用可以在這裏找到一個LastFM等模塊:http://code.google.com/p/python-lastfm/PHP執行蟒蛇不工作

得到它導入正確我這樣做

import sys 
sys.path.append("/home/myusername/build/Python-2.5/Lib/site-packages/") 
import lastfm 

因爲LastFM等模塊被安裝在那裏。

當我使用膩子ssh到我的服務器,我可以簡單地運行python test.py,它的作品完美。但是當我運行它從一個PHP腳本與

exec("python test.py"); 

它suppossedly不工作,腳本doesnt運行。

import lastfm 
api=lastfm.Api(api_key) 

它不運行:當我做

import lastfm 

,然後有後, 其他的事情,但是當我真正嘗試做一些事情,如模塊運行完全正常。再次我可以運行腳本使用相同的python安裝在一個shell中,它執行得很好。所以當我從php腳本運行它時,一定會發生錯誤。我想它會運行完全相同的Python和一切。我檢查了其他帖子,他們說它可能是文件權限的東西,但是我把每個文件都放到了777,但它仍然不起作用。 idk問題可能是什麼。在此先感謝大家。

+0

什麼'passthru(「python test.py」)'顯示? – delphist

+0

即時通訊一個PHP新手和不知道多少,但我做到了這一點,它沒有返回:passthru(「python test.py,$ result」); echo $ result; – stackVidec

回答

1

嘗試使用python可執行文件的完整路徑。例如:

EXEC( 「在/ usr/bin中/ Python的test.py」)

可以使用找到命令行的完整路徑which命令:

$其中蟒蛇 的/ usr/bin/python

+0

我做了哪個python並得到了/ usr/bin/python,並且做了你所說的並且很不幸沒有工作。編輯:我只是測試它,它確實從usr/bin運行python版本,它在我刪除lastfm模塊時起作用,所以它執行,但仍然存在與以前相同的問題。 – stackVidec

1

無論python提出的錯誤會發生在孩子的stderr。嘗試要麼告訴PHP從標準錯誤讀取,或(在python)做到這一點:

import sys 
sys.stderr = sys.stdout 
0

對於Windows用戶:

$output = null; 
exec('C:\\Python27\\python.exe C:\\sud.py', $output); 
echo var_export($output, TRUE); 

代碼中,我正在尋找一整天^^
這就是爲什麼 - 希望它會幫助某人。

-1

對於Windows用戶 - 感謝Karlisup我的PHP文件可以讀取python。 我在EC2亞馬遜使用BITNAMI WAMP,我的python文件(leadatos.py)和php文件都在htdocs文件夾中。

我的職業是

<?php 
 
    passthru('C:\\Python27\\python.exe leadatos.py'); 
 
?>

我的Python文件的最後一行是print "message"

希望它的話!