После обновления моего vps я получаю следующую ошибку:
Не удалось запустить apache: запуск httpd: синтаксическая ошибка в строке 31 файла /etc/httpd/conf.d/php.conf: недопустимая команда 'php_value', возможно, неправильно написана или определена модулем, не включенным в конфигурацию сервера [FAILED]
Включите модули на PHP:
[Модули PHP] bz2 Calendar Core ctype curl date dom ereg exif fileinfo filter ftp gd gettext gmp hash iconv imap intl ionCube Loader json libxml mbstring mcrypt mhash mysql mysqli openssl pcntl pcre PDO pdo_mysql pdo_sqlite sqlitesexlitesexlite_sqlite_sqlite_sqlite_sqlite_sqlite_sqlite_sqlite_sqlite_sqlite_sqlite_sqlite_sqlite_sqlite_sqlite_sqlite_sqlite_sqlite wddx xml xmlreader xmlrpc xmlwriter xsl zip zlib [Модули Zend] Загрузчик PHP ionCube
Строка относительно ошибки:
php_value session.save_handler "файлы"
Что означает ошибка и как ее исправить?
Недавно я столкнулся с этой проблемой, используя Plesk 9.5 на CentOS.
Я не могу точно сказать, было ли это вызвано обновлением Plesk или нет. Заказчик не думает, что в последнее время были внесены какие-либо изменения, но Apache не смог запустить с этой ошибкой.
После оценки системы, чтобы убедиться, что это не связано с нарушением целостности, я выполнил поиск неисправностей и определил, что mod_php
был удален из конфигурации Apache. После проверки настроек Plesk, каждый виртуальный хост на коробке использовал FastCGI и SuExec.
При использовании FastCGI и SuExec вы не можете изменять директивы PHP в php.conf (FastCGI) и .htaccess (SuExec).
Изначально заказчик закомментировал оскорбительные строки, но это нарушило поддержку сеанса для всего. Единственный способ решить эту проблему - вручную добавить mod_php обратно в httpd.conf.
Добавьте следующую строку в раздел с другими LoadModule. Убедитесь, что путь (../modules/) соответствует оставшимся там модулям. Скорее всего, он уже существует в вашей системе и был просто удален из конфигурации во время обновления.
bash# vi /etc/httpd/conf/httpd.conf
LoadModule php5_module ../modules/libphp5.so
bash# apachectl restart
Это застало меня врасплох, и я не могу сказать наверняка, что проблема была вызвана обновлением или лучшим решением. Я открыт для комментариев, но настоятельно рекомендую не комментировать директивы php в /etc/httpd/conf.d/php.conf
как это сломает вещи.
Неверная команда 'php_value', возможно, неправильно написана или определена модулем, не включенным в конфигурацию сервера
Apache httpd-2.4 может выйти из строя с указанной выше ошибкой, если вы по ошибке настроили его для использования другого модуля mpm, кроме prefork (поскольку только prefork mpm отлично работает с php в Linux (CentOs7 / RHEL7). Исправление конфигурации Apache httpd для использования prefork mpm решит проблема.
/etc/httpd/conf.modules.d/10-php.conf
LoadModule модули php5_module / libphp5.so
/etc/httpd/conf.modules.d/00-mpm.conf
LoadModule mpm_prefork_module модули / mod_mpm_prefork.so
Как ранее комментировал Дэвид, это, вероятно, связано с тем, что мод PHP был отключен в Apache2.
Для меня это выглядело как ошибка при (повторном) запуске Apache:
Задание для apache2.service завершилось неудачно, поскольку процесс управления завершился с кодом ошибки. См. "Systemctl status apache2.service" и "journalctl -xe" для подробностей.
Затем внутри journalctl -xe:
AH00526: синтаксическая ошибка в строке 31 файла /etc/apache2/sites-enabled/host.conf Недействительная команда 'php_value', возможно, неправильно написана или определена модулем, не включенным в конфигурацию сервера
Это произошло при обновлении Ubuntu 17.10 до 18.04 (и, как следствие, с PHP7.1 до 7.2), что, по-видимому, полностью отключило libapache2-mod-php *.
В Ubuntu это должно исправить следующее:
sudo a2enmod php7.2
sudo systemctl restart apache2
Это могло произойти, если вы настроили Apache для использования другого MPM, кроме mod_prefork. Проверить, какой модуль используется httpd -V
команда. Он должен показать вам что-то вроде:
...
Server MPM: prefork
...
Если нет, проверьте
/etc/httpd/conf.modules.d/00-mpm.conf
как описано Вот и убедитесь, что в нем присутствует следующая строка без комментариев:
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
Если вам нужно использовать другой модуль, кроме mod_prefork
вам придется прокомментировать или удалить эти строки.
Просто закомментируйте эти строки.
я имел
#php_value session.save_handler "files"
#php_value session.save_path "/var/lib/php/session"
Затем запустите команду «перенастроить, если вы в Plesk, затем перезапустить apache», похоже, все работает нормально. Произошло ли это после обновления plesk # 53 10 минут назад.
Перед запуском обновления с Atomic сделайте резервную копию файла. php.conf
. Затем после завершения обновления перезапишите новый файл старым.
У меня была аналогичная проблема, я понял, что модуль php5 был прокомментирован, что означает, что он не может загрузиться, и в phpmyadmin conf он давал мне ошибки из-за наличия php_admin_value, который, вероятно, работал с php5_module, и его не было на месте. Я зашел на httpd.conf и раскомментировал:
LoadModule php5_module "c:/wamp/bin/php/php5.5.12/php5apache2_4.dll"
редактировать: После реализации моих комментариев ниже я обнаружил, что у меня была еще одна причина, по которой я столкнулся с этой проблемой. На сервере реализован PHP-FPM. Часть реализации PHP-FPM означала, что /etc/httpd/conf.d/php.conf
был отключен (т.е. переименован в php.conf.bak). Последнее обновление принесло новый файл php.conf. В результате конфигурация PHP-FPM противоречила и вызывала упомянутые ошибки. Исправление заключалось в том, чтобы просто переименовать php.conf во что-то вроде php.conf.bak.feb2019
. В результате php.conf не загружается и, следовательно, не возникает конфликта с php-fpm.
/// Перед редактированием: /////
Решение для меня было комбинацией ответов, представленных здесь.
Я заметил эту ошибку после обновления сервера Oracle Linux 7, который давно не обновлялся.
Как было предложено @dasharathmasirkar, @davidhoude @alexlanger, проблема связана с переопределением конфигурации предварительной вилки mpm после обновления.
Чтобы решить эту проблему:
чек /etc/httpd/conf.modules.d/00-mpm.conf
и убедитесь, что следующая строка не прокомментирована:
# prefork MPM: Implements a non-threaded, pre-forking web server
# See: http://httpd.apache.org/docs/2.4/mod/prefork.html
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
Также убедитесь, что другой рабочий mpm закомментирован, чтобы он не конфликтовал:
# worker MPM: Multi-Processing Module implementing a hybrid
# multi-threaded multi-process web server
# See: http://httpd.apache.org/docs/2.4/mod/worker.html
# LoadModule mpm_worker_module modules/mod_mpm_worker.so
Затем перезапустите apache: apachectl restart