繁体   English   中英

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

[英]Python script runs in terminal but not as Apache

我有一个打开文件的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";

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

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

但是我不建议您尝试这样做。 讨厌Windows的配置变得非常沮丧。

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

祝您项目顺利。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM