这是我的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代码没有按预期工作。
答案 0 :(得分:1)
当您在命令行上测试python脚本时,您将以root
运行。您可能没有像root
那样运行网络服务器(这是一件好事),并且网络服务器的用户没有相应的权限来创建和/或写入该文件。