os.walk可以从控制台工作,但不能从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:Python27python.exe -u
import os
print "Content-type: text/htmlnn";
print "<html><head>"
print "<font size=+2><B>os.walk test</B></font><br><br>";
# Remote path
remote_path = r'\unix_serverpath2015q1filesnacanada'
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没有适当的权限。

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

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

相关内容

最新更新