【发布时间】:2015-02-24 23:38:47
【问题描述】:
当我从我的 PyScripter IDE 运行这个 os.walk 代码时,它工作得很好。 os.walk 能够遍历远程 unix 路径并打印目录和文件名。
但是,当我从 Apache 服务器的 cgi-bin 运行相同的脚本时,我没有得到 os.walk (path, dirs, files) 输出。我也没有收到 Apache error.log 文件中记录的任何错误消息。
注意:Python 和我的 cgi-bin 在同一台 Windows 机器上,remote_path 在 Unix 上。
为什么相同的代码在控制台中有效,但在 cgi-bin 中无效?我可以做些什么来解决这个问题?
#!C:\Python27\python.exe -u
import os
print "Content-type: text/html\n\n";
print "<html><head>"
print "<font size=+2><B>os.walk test</B></font><br><br>";
# Remote path
remote_path = r'\\unix_server\path\2015\q1\files\na\canada'
i = 0
for (path, dirs, files) in os.walk(remote_path):
print "Path", path
print "<BR><BR>Dirs", dirs
print "<BR><BR>Files", files
i += 1
if i >= 1:
break
【问题讨论】:
-
Apache 服务器运行的任何用户是否具有访问远程服务器上文件的适当权限?
-
另外:docs.python.org/2/library/cgitb.html 可以方便地调试这类事情。 :-)
-
如何找出 Apache 服务器的运行用户身份?
-
在 Windows 上,打开
services.msc,找到 Apache 服务,右键单击,选择属性,查看登录选项卡。它可能作为本地系统帐户运行(这就是 IIS 的运行方式),在这种情况下,它无法访问网络资源。请参阅httpd.apache.org/docs/2.0/platform/windows.html 并搜索 LocalSystem 了解更多详细信息。