os.walk 从控制台工作但不是从 cgi-bin
os.walk works from console but not from cgi-bin
当我 运行 来自我的 PyScripter IDE 的这个 os.walk 代码时,它工作得很好。 os.walk 能够遍历远程 unix 路径并打印目录和文件名。
然而,当我从我的 Apache 服务器的 cgi-bin 运行 相同的脚本时,我没有得到 os.walk(路径、目录、文件)输出。我也没有在 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\path15\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
感谢kindall,我发现问题确实是Apache没有适当的权限。
为了解决这个问题,我做了以下 (Windows 7 OS):
- 已打开 services.msc。开始 -> 运行 -> "services.msc"
- 在列表 "Apache2" 中找到了我的 Apache 服务。双击它。
- 在 Apache2 服务的属性对话框中,切换到 "Log On" 选项卡。 "Local System account" 的单选按钮已选中。我将其切换为 "This account" 并单击浏览。
- 在 "Enter object name to select" 文本框中,我输入了我的网络名称 + 反斜杠 + 我的用户名。例如 NETWORK\username。单击“确定”。
- 然后在“登录”选项卡上,我看到填充了我的完整网络电子邮件地址。我输入了我的密码和密码确认并点击了应用。
- 最后的步骤是停止 Apache2 服务,然后重新启动该服务。一旦完成,问题就解决了,我的脚本开始从 cgi-bin 运行。 :)
当我 运行 来自我的 PyScripter IDE 的这个 os.walk 代码时,它工作得很好。 os.walk 能够遍历远程 unix 路径并打印目录和文件名。
然而,当我从我的 Apache 服务器的 cgi-bin 运行 相同的脚本时,我没有得到 os.walk(路径、目录、文件)输出。我也没有在 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\path15\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
感谢kindall,我发现问题确实是Apache没有适当的权限。
为了解决这个问题,我做了以下 (Windows 7 OS):
- 已打开 services.msc。开始 -> 运行 -> "services.msc"
- 在列表 "Apache2" 中找到了我的 Apache 服务。双击它。
- 在 Apache2 服务的属性对话框中,切换到 "Log On" 选项卡。 "Local System account" 的单选按钮已选中。我将其切换为 "This account" 并单击浏览。
- 在 "Enter object name to select" 文本框中,我输入了我的网络名称 + 反斜杠 + 我的用户名。例如 NETWORK\username。单击“确定”。
- 然后在“登录”选项卡上,我看到填充了我的完整网络电子邮件地址。我输入了我的密码和密码确认并点击了应用。
- 最后的步骤是停止 Apache2 服务,然后重新启动该服务。一旦完成,问题就解决了,我的脚本开始从 cgi-bin 运行。 :)