2013-06-29 102 views
1

我有一個可以打開文件的python腳本。它將在終端中運行,它將打開readme.html文件並將所有內容打印到終端。當我訪問python.php頁面時,我希望它執行python文件並打開readme.html。它運行沒有錯誤的python文件,並打印出「我在這裏」和「我已完成」,但不打開readme.html文件。我認爲這可能是一個權限問題。但我有777 main.py,python.php和readme.html。它們都是用戶:(無)。我怎樣才能解決這個問題?Python腳本在終端中運行,但不像Apache

main.py

#!C:/Python27/python.exe 
import os 
print "I am Here" 

os.startfile('C:/wamp/www/readme.html') 
print "I am Done" 

python.php

echo "Python test<br/>"; 
echo exec("C:/Python27/python.exe C:/wamp/www/main.py",$output); 
var_dump($output); 
echo "After"; 
+0

服務器日誌中的任何錯誤? – mata

+0

爲什麼你認爲os.startfile是合適的?你真的想讓apache用戶打開自己的網頁瀏覽器來查看文件嗎? – geoffspear

+0

@mata服務器日誌中沒有錯誤,因爲php執行成功並且python腳本運行通過。它只是不打開文件 – tiggles

回答

0

程序開始作爲服務不能在Windows默認訪問桌面。 Apache可能正在運行服務框架,所以python腳本無法打開GUI程序並使它們出現在桌面上。

有解決方法,例如,您可以在Windows服務上設置「交互」標誌。但是,他們都是醜陋的。這裏有一對夫婦的參考,如果你想要走這條路:

但我不會建議嘗試這一點。擺弄Windows的配置變得非常快速令人沮喪。

相反,您應該從桌面運行Python程序並使用某種IPC方法與其通信。對於IPC,您可以使用套接字,ZeroMQ,XML-RPC,JSON-RPC或許多其他許多套接字。例如,Apache將運行一個PHP腳本,該腳本運行一個Python腳本,該腳本使用XML-RPC發送消息,告訴正在運行的Python程序啓動給定的文件。

祝您的項目順利。

+0

是的,我需要重新考慮我的應用程序。謝謝! – tiggles

相關問題