Gallery:模块:webdav:管理(admin)
该文档用于指导Gallery管理员进行WebDAV模块的配置及释疑。
如果你在查找有关WebDAV客户端的指导信息或开发方面资料的话,请参见:
配置[ ]
Gallery中各相册的WebDAV URL显示在WebDAV URL区块中。在站点管理(Site Admin)中,从管理选项(Admin Options)下选取外观主题(Themes)。
你还可以使用Mount with WebDAV项目链接进行自动连接。
Zeroconf[ ]
Lennart Poettering的Apache mod_dnssd可用来发布Gallery和具有multicast DNS / Zeroconf / DNSSD / Rendezvous / Bonjour Gallery WebDAV连接: http://0pointer.de/lennart/projects/mod_dnssd/ http://packages.debian.org/libapache2-mod-dnssd
向你的Apache config添加如下语句:
<IfModule mod_dnssd.c> <Location /gallery2> DNSSDServiceName "Gallery" </Location> <Location /gallery2/w> DNSSDServiceName "Gallery" DNSSDServiceTypes _webdav._tcp </Location> </IfModule>
之后Gallery会出现在Safari的Bonjour菜单中,Mac OS X "连接到服务器…"对话框中,以及Gnome的服务搜寻小程序中。
疑难解答[ ]
PHP没有XML支持[ ]
更多有关PHP XML支持的信息。
WebDAV请求未被处理[ ]
你的web服务器无法将WebDAV HTTP请求方法之一传至Gallery:
- PROPFIND
- PROPPATCH
- MKCOL
- LOCK
- UNLOCK
如果你的网站是运行于Apache服务器上的话,请确保mod_dav对你的网站禁用了。参见:mod_dav。
HTTP认证模块被禁用[ ]
更多有关HTTP认证模块的信息。
mod_dav[ ]
mod_dav 不是必须的。Dav 必须被禁用(从你的httpd.conf 中移除Dav On)。
'连接至WebDAV'规则被禁用[ ]
大多数WebDAV客户端不支持查询字串。'连接至WebDAV' URL重写规则生成不带查询字串的短URL。
DAV头缺失[ ]
WebDAV spec,RFC 2518,约定在所有OPTIONS应答中返回DAV头:
此头表明源支持DAV计划和协议。所有DAV相容的源必须在所有OPTIONS应答中返回DAV头。
WebDAV模块会在所有应答中返回DAV头,但某些服务器配置无法向脚本传输OPTIONS请求,如Apache不会向CGI脚本传输OPTIONS请求:http://issues.apache.org/bugzilla/show_bug.cgi?id=37982
或者我们可以使用Apache的mod_headers和mod_rewrite来设定DAV头。 http://httpd.apache.org/docs/mod/mod_headers.html http://httpd.apache.org/docs/rewrite/
mod_headers指令位于modules/webdav/data/options/.htaccess中。'OPTIONS Requests'重写规则将OPTIONS请求重新导向至该目录。
缺失DAV头的备用URL[ ]
如果你在使用Apache,就应当检查一下mod_headers是否被启用了。
URL重写模块被禁用[ ]
URL重写模块为OPTIONS请求自动进行重新导向,我们就可以设定DAV头了,并生成不具查询字串的短URL。
较差URL重写配置[ ]
WebDAV 'OPTIONS Requests'规则仅为Apache mod_rewrite和ISAPI_Rewrite解析器所支持。
'OPTIONS Requests' 规则被禁用[ ]
如果你使用Apache mod_rewrite,可以手动将下面内容加入Gallery的.htaccess文件中:
RewriteCond %{REQUEST_METHOD} OPTIONS RewriteRule . /foo/gallery2/modules/webdav/data/options/ [QSA,L]
Native Windows WebDAV客户端无法连接到服务器[ ]
问题:
如果看起来是用户名/密码不被接受的话,你应当检查:
- webserver是否运行的是Apache
- Gallery是否在某个Apache别名文件夹中(mod_alias)
如果是这样的情况,Apache就不会重新导向example.com/gallery2 to example.com/gallery2/,而native Windows WebDAV客户端则会发出那样的请求。
解决方案:
在添加Gallery作为网络源,用户名/密码不被接受时进行取消即可,并点击向导中的继续按钮。一旦Gallery被添加为网络源,认证应会最终起效。
如果不行的话,比如我,那就尝试安装webdav客户端(如DataFreeway,接着在此客户端中安装你的连接。接着进行连接。之后再次用Native Windows WebDav客户端进行尝试... 这样应该就可以了。
mod_security和Apache相关注释[ ]
在启用了URL Rewrite和HTTP Auth modules/plugins 的Apache 2.2.4和mod_security 1.9.4下测试过了。使用的客户端是Windows XP "My Network Places"
假设你有一个全局(位于所有<Directory>或<VirtualHost>容器之外)mod_security过滤器,而它拒绝除了GET,HEAD和POST之外的请求,并返回一个"404 – 文件不存在" (status:404)的应答。
SecFilterSelective REQUEST_METHOD "!^(GET|HEAD|POST)$" "id:1001,deny,log,status:404"
要绕过此过滤器并仅在特定目录上允许它的话,将如下内容添加到你的Apache config:
<Directory /path/to/gallery2/> Options FollowSymLinks -Indexes -Includes -IncludesNOEXEC -ExecCGI AllowOverride Options FileInfo AuthConfig .... SecFilterRemove 1001 SecFilterSelective REQUEST_METHOD "!^(GET|HEAD|POST|PROPFIND|PROPPATCH|MKCOL|LOCK|UNLOCK|MOVE|PUT|OPTIONS|DELETE|USERNAME)$" </Directory>
在给出的例子中,"1001" ("id:1001,deny,log,status:404")为指派给全局过滤器的ruleset ID。"SecFilterRemove 1001"则禁用该过滤器。
保存更改,然后重启Apache > 登入站点管理> 插件> 卸载并按顺序重新安装以下插件:
- URL Rewrite,HTTP Auth 最后是WebDav
启动Windows Explorer >浏览到我的网络位置(My Network Places) > 添加网络位置(Add Network Place)并将G2提供的URL地址粘贴上去
MS Internet Explorer <-> Apache WebDav的简单备忘单[ ]
如前文可能会有些简单和杂乱...:
- 启用Gallery2的URL重写插件/Apache的mod_rewrite(/gallery2/ base目录下的.htaccess chmod为666)
- 确保在Apache中禁用了mod_dav和mod_dav_fs(grep那些Apache模块的phpinfo()输出)
- 启用Gallery2的HTTP认证插件(Auth Plugin)
- 启用Gallery2外观主题中的WebDav内容区块(我用在相册页面上了)
- 使用IE登入Gallery2
- 浏览到你想编辑的地方
- 点击'Click here'来打开WebDav连接
警告 "维护模式"必须被禁用!!因为不兼容!(重写规则的某些原因所致)