【问题标题】:os.walk works from console but not from cgi-binos.walk 从控制台工作,但不能从 cgi-bin
【发布时间】: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

【问题讨论】:

标签: python apache cgi os.walk


【解决方案1】:

感谢kindall,我发现问题确实是Apache没有适当的权限。

为了解决这个问题,我做了以下(Windows 7 操作系统):

  1. 已打开 services.msc。开始 -> 运行 -> “services.msc”
  2. 在“Apache2”列表中找到了我的 Apache 服务。双击它。
  3. 在 Apache2 服务的“属性”对话框中,切换到“登录”选项卡。选中“本地系统帐户”的单选按钮。我将其切换到“此帐户”并点击“浏览”。
  4. 在“输入要选择的对象名称”文本框中,我输入了我的网络名称 + 反斜杠 + 我的用户名。例如网络\用户名。点击确定。
  5. 然后在登录选项卡上,我看到我的完整网络电子邮件地址已填充。我输入了我的密码和密码确认,然后点击了应用。
  6. 最后的步骤是停止 Apache2 服务,然后重新启动该服务。一旦完成,问题就解决了,我的脚本开始从 cgi-bin 运行。 :)

【讨论】:

    猜你喜欢
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-06
    • 2018-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多