2011-07-11 108 views
0

这是我的python脚本,它在执行时会创建一个“test.txt”文件。当我执行使用终端(Ubuntu 11.04)[email protected]:/var/www/HMS# python test.py。它会按照我的预期在/var/www/HMS目录中创建“test.txt”。从PHP调用Python脚本的问题

 
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

当您在命令行上测试python脚本时,您的运行方式为root。有可能你没有运行网络服务器root(这是一件好事),并且网络服务器的用户没有适当的权限来创建和/或写入该文件。

+0

非常感谢您的回答Mat..Now我修正了这个问题。不过,在执行'nltk.WordNetLemmatizer()'函数时,我遇到了类似的问题。这次的权限不是问题,因为我在你的建议后检查过。如果你熟悉'NLTK library',他可以帮我[this](http://stackoverflow.com/q/6646310/585329) – Maggie

+0

你是如何设置网络服务器权限的? – slash89mf