1

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

主文件

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

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

蟒蛇.php

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

1 回答 1

0

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

有一些变通方法,例如您可以在 Windows 服务上设置“交互”标志。然而,他们都是丑陋的。如果你想走这条路,这里有几个参考:

但我不建议尝试这样做。摆弄 Windows 的配置很快就会变得令人沮丧。

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

祝你的项目好运。

于 2013-06-29T22:42:45.523 回答