一个python cgi脚本让我搜索一个sqlite数据库,并向我提供一个文件的链接供下载。这些文件是web目录之外的目录中的所有本地文件。 我尝试过:
if os.access(filepath, os.R_OK):
这已经给我一个错误args = 13,Permission denied。
接下来我在想我该怎么做:
file_to_open =“file://”+ file_to_download
了urllib.urlopen(file_to_open)
不幸的是我必须先处理错误。 正如我测试了一些事情:
文件存在,否则我收到其他错误
chmod 777 chown
我陷入困境,不知道是否以及如何让Python在webroot之外下载文件。
答案 0 :(得分:0)
如果文件应该可以通过Web应用程序访问,则必须由apache用户读取。这是设计的 - 任何不能被apache用户阅读的内容都无法通过网络访问。
由于您可能不希望将chown
这些文件发送给apache用户(这可能允许Web用户修改它们),您基本上有两种选择:
将文件组设置为apache用户组(使用chgrp
)并让该组的任何用户(chmod g+r FILE...
)可以读取它们,或者
使文件对服务器上的任何进程都可读(chmod o+r FILE...
)。
确保apache用户至少对文件的所有父目录执行(+x
)权限,否则这将无效。
您还可以使用单独的服务将这些文件提供给Web应用程序,但这要复杂得多(您可能不会需要它)。