Python脚本在终端中运行,但不在Apache中运行

时间:2013-06-29 20:42:23

标签: php python permissions

我有一个打开文件的python脚本。它将在终端运行,它将打开readme.html文件并将所有内容打印到终端。当我访问python.php页面时,我希望它执行python文件并打开readme.html。它运行python文件没有错误,并打印出“我在这里”和“我完成”,但不打开readme.html文件。我认为这可能是一个权限问题。但我有777 main.py,python.php和readme.html。他们都是用户:(无)。我该如何解决这个问题?

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";

1 个答案:

答案 0 :(得分:0)

程序启动时,默认情况下,Windows中的服务无法访问桌面。 Apache可能正在运行服务框架,因此python脚本无法打开GUI程序并使它们出现在桌面上。

有解决方法,例如,您可以在Windows服务上设置“交互”标志。但是,所有这些都很难看。如果您想沿着这条路走下去,这里有几个参考:

但我不建议那样做。摆弄Windows的配置变得非常令人沮丧。

相反,您应该从桌面运行Python程序并使用某种IPC方法与之通信。对于IPC,您可以使用套接字,ZeroMQ,XML-RPC,JSON-RPC或许多其他套接字。例如,Apache将运行一个PHP脚本,该脚本运行Python脚本,该脚本使用XML-RPC发送消息,告诉正在运行的Python程序启动给定文件。

祝你的项目好运。