从PHP调用Python脚本时的问题

1 投票
1 回答
664 浏览
提问于 2025-04-16 21:14

这是我的一个Python脚本,当我运行它时,会创建一个名为“test.txt”的文件。当我在终端(Ubuntu 11.04)中执行命令 root@gml-VirtualBox:/var/www/HMS# python test.py 时,它会在 /var/www/HMS 目录下创建“test.txt”,这正是我想要的。

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”这个输出文件。

index.php:

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

这两个文件 test.pyindex.php 都在同一个目录下(/var/www/HMS/)。但是当我把 test.py 修改成这样:

#!/usr/bin/env python

def init():
    print "done"

def main():
    init()

if __name__ == '__main__':
    main()

它在浏览器中显示了 temp: done,这正是我预期的结果。

我不知道为什么我之前的Python代码没有按预期工作。

1 个回答

1

当你在命令行上测试这个Python脚本时,你是以root用户的身份在运行。很可能你并不是以root用户身份来运行网页服务器(这其实是个好事),而网页服务器的用户没有足够的权限去创建或写入那个文件。

撰写回答