从PHP调用python脚本时出现问题

Problem in calling Python script from PHP

这是我的python脚本,它在执行时创建一个"test.txt"文件。当我使用终端(Ubuntu 11.04)root@gml-VirtualBox:/var/www/HMS# python test.py执行时。如我所料,它在/var/www/HMS目录中创建了"test.txt"。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
test.py:

#!/usr/bin/env python

def init():
    filename ="test.txt"
    file = open(filename, 'w')
    file.write("This is the new content of test.txt :-)")
    file.close()
    print"done"

def main():
    init()

if __name__ == '__main__':
    main()

但是当我尝试使用PHP调用这个test.py时,它并没有创建"test.txt"输出文件。

1
2
3
4
index.php:

$tmp = exec("python test.py");
echo"temp: $tmp";

两个test.pyindex.php都在同一个目录(/var/www/HMS/中)。但当我这样修改test.py时:

1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env python

def init():
    print"done"

def main():
    init()

if __name__ == '__main__':
    main()

它在浏览器中打印temp: done,这是我所期望的。

我不知道为什么我以前的python代码不能按预期工作。


在命令行上测试python脚本时,将以root的身份运行。很可能您没有以root的身份运行Web服务器(这是一件好事),并且Web服务器的用户没有创建和/或写入该文件的适当权限。