Почему возникает ошибка "Invalid command 'php_value'"?

Не могу запустить сервер Apache и получаю следующие сообщения об ошибках: <br/> <pre><code>ноя 01 19:21:36 it02m.local.koround.ru systemd[1]: Starting The Apache HTTP Server...
ноя 01 19:21:36 it02m.local.koround.ru httpd[3489]: AH00112: Warning: DocumentRoot [/var/www/html/bx-site] does not exist
ноя 01 19:21:36 it02m.local.koround.ru httpd[3489]: AH00526: Syntax error on line 70 of /etc/httpd/conf.d/default.conf:
ноя 01 19 21:36 it02m.local.koround.ru httpd[3489]: Invalid command 'php_value', perhaps misspelled or defined by a module not included in the server configuration
ноя 01 19:21:36 it02m.local.koround.ru systemd[1]: httpd.service: Main process exited, code=exited, status=1/FAILURE
ноя 01 19:21:36 it02m.local.koround.ru systemd[1]: httpd.service: Failed with result 'exit-code'.
ноя 01 19:21:36 it02m.local.koround.ru systemd[1]: Failed to start The Apache HTTP Server.</code></pre> <br/> Можете подсказать, в чем может быть проблема?
  • 1 ноября 2024 г. 16:43
Ответы на вопрос 2
Ошибка "Invalid command 'php_value'" обычно возникает в результате неправильного использования директивы `php_value` в конфигурационных файлах Apache. Вот несколько причин, почему вы можете столкнуться с этой ошибкой, и способы их исправления:

1. **Модуль PHP не загружен**: Директива `php_value` используется в контексте модуля `mod_php`. Если ваш сервер Apache настроен на использование PHP через другую технологию (например, PHP-FPM), то эта директива не будет распознана. Убедитесь, что модуль `mod_php` загружен. Вы можете сделать это, добавив следующую строчку в конфигурационный файл Apache (если это необходимо):
   ```apache
   LoadModule php7_module modules/libphp7.so
   ```

2. **Использование PHP-FPM**: Если ваш сервер использует PHP-FPM, то они создают связь между Apache и PHP через сокеты или TCP. В этом случае директивы `php_value` и `php_flag` не будут работать. Вам нужно перенести конфигурацию, содержащую эти директивы, в файл `.ini` для PHP или настроить параметры непосредственно в файле сервиса, который обрабатывает PHP.

3. **Конфигурация в VirtualHost**: Если вы используете директивы `php_value` в контексте `<VirtualHost>`, убедитесь, что этот контекст поддерживает использование этих директив. Если вы используете PHP-FPM, вам нужно будет использовать конфигурацию в `.user.ini` или `php.ini`.

4. **Путь к DocumentRoot не существует**: Из предупреждения вы также видите, что `DocumentRoot` указан неверно. Убедитесь, что директория `/var/www/html/bx-site` существует. Если она отсутствует, создайте её или укажите правильный путь.

5. **Синтаксические ошибки**: Возможно, есть опечатки или синтаксические ошибки в строке, где используется `php_value`. Проверьте все директивы на корректность.

### Рекомендации по исправлению:
1. Проверьте, какой именно метод обработки PHP вы используете (mod_php или PHP-FPM).
2. Убедитесь, что пути к директориям указаны верно.
3. Если используете PHP-FPM, ознакомьтесь с документацией о том, как настраивать конфигурацию PHP через файлы `.ini` вместо `php_value` в конфигурации Apache.
4. Перезапустите сервер Apache после внесения изменений в конфигурацию и проверьте логи на наличие новых ошибок.

Запустите команду для проверки конфигурации Apache перед его перезапуском:
```bash
apachectl configtest
```
Это поможет выявить синтаксические ошибки в конфигурации.
Проблема была в том что PHP, в дефолтных репозиториях моей ОС (в данном случае это была Alma Linux), PHP шёл без модуля для апач и от того в директории с модулями: /etc/httpd/modules отсутствовал модуль libphp.so. Чтобы решить проблему я, удалил установленный пакет PHP: 
dnf remove php
Затем добавил репозиторий реми:
sudo dnf -y install http://rpms.remirepo.net/enterprise/remi-release-9.rpm -y

Сбросил старый модуль с PHP:
sudo dnf module reset php -y
И установил новый PHP из репозитория реми:
sudo dnf module install php:remi-8.1
Более подробная инструкция . Только репозиторий реми там 8-й версии, в моем случае нужен был 9-й (в своём примере я это подправил)
Похожие вопросы