os.walk从控制台工作,但不是从cgi-bin工作

时间:2015-02-24 23:38:48

标签: python apache cgi os.walk

当我从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

1 个答案:

答案 0 :(得分:0)

多亏了善意,我发现问题确实是Apache没有相应的权限。

要解决此问题,我执行了以下操作(Windows 7操作系统):

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