Apache2: Ожидал , но увидел

#apache #raspberry-pi #apache2 #raspberry-pi4

Вопрос:

Недавно я запустил сервер apache2 на своем raspi, который работает совершенно нормально. Сегодня мне пришлось перезагрузить сервер, даже не изменив файлы конфигурации, и по какой-то причине я получил следующую ошибку:

 apache2: Syntax error on line 225 of /etc/apache2/apache2.conf: 
Syntax error on line 30 of /etc/apache2/sites-enabled/default-ssl.conf: 
Expected </Directory> but saw </VirtualHost>
 

Что ж, подумал я, давайте отследим это:

/etc/apache2/apache2.conf

    [...]

   217  
   218  # Include of directories ignores editors' and dpkg's backup files,
   219  # see README.Debian for details.
   220  
   221  # Include generic snippets of statements
   222  IncludeOptional conf-enabled/*.conf
   223  
   224  # Include the virtual host configurations:
   225  IncludeOptional sites-enabled/*.conf
   226  
   227  # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
 

В строке 255 нет ничего плохого. Фактически включен самим apache.

/etc/apache2/sites-enabled/default-ssl.conf

      1  <IfModule mod_ssl.c>
     2      <VirtualHost *:443>
     3  
     4          ServerAdmin myemail@gmail.com
     5          ServerName mydomain.net
     6  
     7          DocumentRoot /var/www/html
     8  
     9          <Directory /var/www/html>
    10              Options Indexes FollowSymLinks
    11              AllowOverride None
    12              Require all granted
    13          </Directory>
    14  
    15          ErrorLog ${APACHE_LOG_DIR}/error.log combined
    16          CustomLog ${APACHE_LOG_DIR}/access.log combined
    17  
    18          SSLEngine on
    19          SSLCertificateFile  /etc/apache2/ssl/mydomain.net.cer
    20          SSLCertificateKeyFile /etc/apache2/ssl/mydomain.net.key
    21          SSLCertificateChainFile /etc/apache2/ssl/mydomain.net.intermediate.cer
    22  
    23          <Directory /var/www/html/Humboldtplan>
    24              AuthType Basic
    25              AuthName "Restricted Content"
    26              AuthUserFile /etc/apache2/.passwords/humboldt
    27              Require valid-user
    28          </Directory>
    29  
    30      </VirtualHost>
    31  </IfModule>
 

Теперь я действительно не могу понять, в чем здесь проблема. Я ломал голову над тем, что может быть не так, но мне все кажется правильным. Все теги правильно закрыты, они там, </VirtualHost> где и должны быть. Кроме того, та же конфигурация работала и раньше, в чем проблема так внезапно?

Я подумал, что это может быть не связанная с этим проблема, такая как память, поэтому я сделал все основные вещи. Обновил все пакеты, перезагрузил свой raspi, все еще не работал, выключил его и отключил, чтобы устранить возможные проблемы с памятью, все еще не работал.

Что здесь не так?

Комментарии:

1. Вы уверены, что строка 26 правильна в файле default-ssl.conf

2. это так, просто изменил имя файла на «ограничено» в этом посте (исходное имя файла содержит только алфавитные символы, и файл действительно существует.)

3. Отредактировал его обратно в то, чем он был первоначально. Я хотел изменить имена по соображениям конфиденциальности, но, думаю, это немного преувеличение.

4. Закомментируйте строки с 23 по 28 с символом # перед каждой строкой. Сохраните файл и перезапустите apache, это покажет, вызывает ли эта строка проблему.

5. Спасибо за этот совет, это именно то, что я сделал 10 минут назад, и я нашел проблему (но другим способом) :). Ответ ниже.

Ответ №1:

Что ж, ответ-разочаровывающая ошибка «пробелов». Распечатка экранированных символов с cat -An [...] помощью дала мне следующее:

      7  ^I^IDocumentRoot /var/www/html$
     8  $
     9  ^I^I<Directory /var/www/html>$
    10  M-bM-^@M-^K^I^I^IOptions Indexes FollowSymLinks$
    11  M-bM-^@M-^K^I^I^IAllowOverride None$
    12  ^I^I^IRequire all granted$
    13  M-bM-^@M-^K^I^I</Directory>$
    14  $
    15  ^I^I#ErrorLog ${APACHE_LOG_DIR}/error.log$
    16  ^I^I#CustomLog ${APACHE_LOG_DIR}/access.log combined$
    17  $
 

Я понятия не имею, что именно M-bM-^@M-^K означает (кроме некоторой формы пробелов UTF-8), и как они на самом деле оказались в этом файле (тем более, что я, как я уже сказал, не редактировал их, пока сервер работал). Но удаление их, похоже, решило мою проблему.

Это было особенно удивительно, так как они не останавливали мой курсор от перехода с вкладки на вкладку и никоим образом не форматировали документ. Я заметил это только при попытке прокомментировать конкретные строки, поскольку они не были помечены синим цветом (как «прокомментированные») после того, как я поставил перед ними хэштег.