Answers:
所发生的是apache2.4中配置文件的语法已更改。
资料来源:升级至13.10后,我也发生了这种情况
其中的所有文件/etc/apache2/conf.d
都应移至/etc/apache2/conf-available
。
他们现在的工作方式相同sites
和mods
工作。只需将conf文件放在conf-available
文件夹中,然后启用所需文件即可a2enconf <config-file-name>
。
我有一个包含conf.d/httpd.conf
ServerName指令的文件。
为了使它起作用,我必须将其移至conf-available
目录并手动启用它。
sudo mv /etc/apache2/conf.d/httpd.conf /etc/apache2/conf-available/httpd.conf
sudo a2enconf httpd
以前,文件中/etc/apache2/sites-available
没有扩展名。例如/etc/apache2/sites-available/default
。现在需要.conf
扩展。
如果有的话/etc/apache2/sites-available/some-site
,在13.04中,您可以使用启用它sudo a2ensite some-site
。现在它会给你一个错误说
错误:站点不存在站点!
要解决此问题,请将附加.conf
到中的所有配置文件中sites-available
。您可以在中进行相同的操作sites-enabled
,也可以删除所有文件并手动重新启用每个文件。
我建议您手动进行操作,因为您可能需要修复每个VHost(下一步)。
sudo find /etc/apache2/sites-available/ ! -iname '*.conf' -type f -exec mv '{}' '{}'.conf \;
如果您决定手动进行操作:
sudo rm /etc/apache2/sites-enabled/*
sudo a2ensite your-site-name
如果您具有以下条件:
<Directory /path/to/your/site/>
order allow,deny
allow from all
</Directory>
它应该变成:
<Directory /path/to/your/site/>
Require all granted
</Directory>
欲了解更多信息,请检查意见通过DaveRandom上的答案堆栈溢出。
简而言之,如果您升级到apache2.4并保留了httpd.conf
apache2.2 的旧版本,则allow指令应能正常工作。如果您升级httpd.conf
(这是我所暗示的),你会直到你改变获得403错误Order
/ Allow
/ Deny
指令为等效Require
。
如果你有目录选项,需要注意的是他们都必须有预加+
或-
或他们没有在所有。不允许将两者混合使用:
这是允许的:
<Directory /path/to/your/site/>
Options +Indexes +FollowSymLinks -MultiViews
</Directory>
这就是(请注意,这些示例不会同时执行相同的操作,前一个示例禁用了该MultiViews
选项,下一个示例则没有):
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks MultiViews
</Directory>
不再允许:
<Directory /path/to/your/site/>
Options Indexes FollowSymLinks -MultiViews
</Directory>
最后一个配置选项将引发语法错误,提示:
所有选项都必须以+或-开头,否则就没有选项。
完成所有操作后,您需要重新启动apache服务器以使更改生效:
sudo apache2ctl restart
您可以在官方文档中找到从2.2到2.4 的详细升级指南。
httpd.conf
只是一个例子。目录中可能没有任何配置文件conf.d
,在这种情况下,只需跳过该步骤。至于apache2.conf
,则不应将其移动到conf-available
目录中。它是apache的主要配置文件,其路径应为/etc/apache2/apache2.conf,并且不得更改。
我遇到了类似的问题。
除非使用“全部允许”,否则我无法让Apache 2.4运行,这很烦人,因为我想提供一个低于2.4的版本。经过大量的试验和错误以及大量的搜索之后,我发现了对access_compat的引用,并意识到那里只是为了兼容性。尽管apache文档指出两者都可以使用,但建议您不要使用。
我从/ etc / sysconfig / apache2加载文件中删除了此模块,这立即解决了我的问题。
问候利亚姆
httpd.conf
文件或conf.d
目录。但是有一个apache2.conf
文件。我尝试将其移动到conf-available
目录中,并在重新启动apache2时收到以下错误:apache2:无法打开配置文件/etc/apache2/apache2.conf:没有这样的文件或目录 -可能是什么原因?