我在使用 Apache 2.2.22 + PHP 5.4.0 的主机上遇到以下问题
我需要/home/server1/htdocs/admin/contents.php
在用户发出请求时提供文件:http://server1/admin/contents
,但我在服务器 error_log 上获得了此消息。
Negotiation: discovered file(s) matching request: /home/server1/htdocs/admin/contents (None could be negotiated)
Run Code Online (Sandbox Code Playgroud)
请注意,我mod_negotiation
在相关虚拟主机的选项中启用了 MultiViews:
<Directory "/home/server1/htdocs">
Options Indexes Includes FollowSymLinks MultiViews
Order allow,deny
Allow from all
AllowOverride All
</Directory>
Run Code Online (Sandbox Code Playgroud)
我也使用mod_rewrite
, 遵循以下.htaccess
规则:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\./]*)$ index.php?t=$1 [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
这看起来很奇怪,但是在与 PHP 5.3.6 相同的盒子上它曾经可以正常工作。我只是想升级到 PHP 5.4.0,但我无法解决这个协商问题。关于为什么 Apachecontents.php
在请求时无法匹配的任何想法content
(这应该是 mod_negotiation 应该做什么)?
更新:我注意到 mod_negotiation 对于扩展名不同于 …
我正在尝试使用 postgresql 支持配置 Dovecot + Postfix + PostfixAdmin。我成功配置了 postfix 以将电子邮件发送到我的域的别名,现在我想在我的服务器上配置实际的邮箱支持。我遵循了 dovecot 2 wiki ( http://wiki.dovecot.org/AuthDatabase/SQL )上数据库支持的配置选项,dovecot 启动时没有错误,但在第一次尝试通过 IMAP 连接时,dovecot 在邮件日志上抱怨:
auth: Fatal: Unknown database driver 'pgsql'
Run Code Online (Sandbox Code Playgroud)
我确定 dovecot 有 postgres 支持,这里是 dovecot --build-options 的输出:
Build options: ioloop=epoll notify=inotify ipv6 openssl io_block_size=8192
Mail storages: cydir dbox maildir mbox mdbox raw shared
SQL driver plugins: mysql postgresql sqlite
Passdb: checkpassword ldap pam passwd passwd-file shadow sql
Userdb: checkpassword ldap(plugin) nss passwd prefetch passwd-file sql
Run Code Online (Sandbox Code Playgroud)
附加信息:
/etc/dovecot/conf.d/auth-sql.conf.ext
passdb {
driver = pgsql
# …
Run Code Online (Sandbox Code Playgroud)