Jeśli po upgradzie serwera apache masz taki błąd
apache2: Syntax error on line 1 of /etc/apache2/apache2.conf
Invalid command 'Require', perhaps misspelled or defined by
To wiedz, że warto czasami czytać changelog przed upgradem 🙂
Więc co się takiego zmieniło?
Główne zmiany nastąpiły w module Access Control, skutkiem czego wyleciała dyrektywa Order deny,allow na rzecz Require, teraz żeby kontrolować dostęp do zasobu musimy zmienić konfiguracje na:
#Każdy ma dostęp do katalogu:
OLD Apacha 2.2 conf:
<Directory "/home/www/html">
Order allow,deny
Allow from all
</Directory>
NEW Apache 2.4 conf:
<Directory "/home/www/html">
Require all granted
</Directory>
#Tylko jeden host ma dostęp do katalogu:
OLD Apacha 2.2 conf:
<Directory "/home/www/html">
Order allow,deny
Deny from all
Allow from uchacz.it
</Directory>
NEW Apache 2.4 conf:
<Directory "/home/www/html">
Require host uchacz.it
</Directory>
#Dostęp do zasobu ma tylko host uchacz.it
# i poświadcza sie loginem/hasłem z pliku passwd:
OLD Apacha 2.2 conf:
<Directory "/home/www/html">
Order allow,deny
Deny from all
Satisfy ALL
Allow from uchacz.it
AuthUserFile /home/www/.passwd
AuthName secure
Require valid-user
</Directory>
NEW Apache 2.4 conf:
<Directory "/home/www/html">
AuthBasicProvider File
AuthUserFile /home/www/.passwd
AuthName secure
<RequireAll>
Require valid-user
Require uchacz.it
</RequireAll>
</Directory>
Zmiana także nastąpiła w nazewnictwie następujących dyrektyw(przy czym stare jeszcze będą przez jakiś czas dostępne):
– MaxRequestsPerChild na MaxConnectionsPerChild,
– MaxClients na MaxRequestWorkers.
A tu szybkie lekarstwo 🙂