从PHP调用Python脚本时的问题
这是我的一个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.py
和 index.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
用户身份来运行网页服务器(这其实是个好事),而网页服务器的用户没有足够的权限去创建或写入那个文件。