Ошибка запуска Apache «значение php»

12

После обновления моего VPS я получаю следующую ошибку:

Не удалось запустить apache: Запуск httpd: синтаксическая ошибка в строке 31 /etc/httpd/conf.d/php.conf: неверная команда 'php_value', возможно, с ошибкой или определена модулем, не включенным в конфигурацию сервера [FAILED]

Включить модули на PHP:

[Модули PHP] bz2 календарь Ядро ctype дата скручивания дата 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 Сканерфаллослофалксплсфоцксплсфоцк юмл шхоллсфалксплосфинкцій шлінфл юр шл ю ш з л е н л ю ш е н л ю ш е н л ю ш е з л ю ш е н л ю ш е з з л е н к з л о й з л о л з л ли й ш е л о ш л о л ли ли ли Сфин лимиты в виде логических ссылок в формате PDF? wddx xml xmlreader xmlrpc xmlwriter xsl zip zlib [Zend Modules] PHP-загрузчик ionCube

Линия относительно ошибки:

php_value session.save_handler "файлы"

Что означает ошибка и как ее исправить?

Дэвид Э.
источник

Ответы:

12

Недавно я столкнулся с этой проблемой, используя Plesk 9.5 на CentOS.

Я не могу точно сказать, было ли это вызвано обновлением Plesk или нет. Заказчик не считает, что в последнее время были внесены какие-либо изменения, но Apache не удалось запустить с этой ошибкой.

После оценки системы, чтобы убедиться, что это не из-за нарушения, я выполнил некоторые неполадки и определил, что mod_phpони были удалены из конфигурации Apache. После проверки настроек Plesk каждый vhost на коробке использовал 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как это сломает материал.

Дэвид Хоуд
источник
спасибо Дэвид, спас день Мой журнал yum показывает автоматическое обновление до php 5.3.26, но я не совсем понимаю, почему httpd.conf был перезаписан. С уважением
Спасибо! Я зашел на httpd.conf и увидел, что строка LoadModule php5_module pathfilename была закомментирована, я просто удалил # и все снова стало нормально.
Nickool
Я получил эту ошибку после обновления с Ubuntu 16.04 до 18.04.1. Я не знаю причину, и нет каталога модулей, вместо этого доступен каталог модов и модов. Я добавил символические ссылки для php7.2.conf и php7.2.load к модам с указанием доступных модов, после чего apache2 смог запустить.
Крис Дженкс
6

Неверная команда 'php_value', возможно, с ошибкой или определена модулем, не включенным в конфигурацию сервера

Apache httpd-2.4 может завершиться с ошибкой, описанной выше, если вы по ошибке настроили его на использование модуля mpm, отличного от prefork (поскольку только prefork mpm прекрасно работает с php в Linux (CentOs7 / RHEL7). Исправление конфигурации Apache httpd для использования prefork mpm решит проблему). проблема.

  1. /etc/httpd/conf.modules.d/10-php.conf

    LoadModule php5_module modules / libphp5.so

  2. /etc/httpd/conf.modules.d/00-mpm.conf

    LoadModule mpm_prefork_module modules / mod_mpm_prefork.so

Дашарат Масиркар
источник
1

Это может произойти, если вы настроили 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вам не нужно комментировать или удалять эти строки.

Алекс Лангер
источник
1

Как прокомментировал Дэвид ранее, это вероятно потому, что мод 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
ywarnier
источник
0

Просто прокомментируйте эти строки.

я имел

#php_value session.save_handler "files"
#php_value session.save_path    "/var/lib/php/session"

Затем запустите «перенастроить, если вы в Plesk, а затем перезапустите Apache», казалось, работает нормально. Это могло произойти после обновления plesk № 53 10 минут назад.

Джимми
источник
Привет, я не использую Plesk, использую Zpanel. Что мне нужно перенастроить? Спасибо
Дэвид Э.
Я в основном удалил эти строки, а затем перезапуск Apache может исправить это. Но мне пришлось перенастроить vhost в plesk. Это просто кнопка, не уверен, что эквивалент в cpanel.
Джимми
Это немного беспокоит. Это часть основного php - вам нужно прыгать через обручи во время компиляции, чтобы отключить поддержку сеанса. И согласно руководству, они оба изменяемы в PHP_INI_ALL (но, возможно, стоит попробовать php_admin_value). Ваш обработчик сеанса работает? Вы используете mod_php?
Symcbean
1
Только что это случилось. Закомментирование некорректных строк позволит запустить Apache, но, помимо прочего, удалит поддержку сеанса. Скорее всего, mod_php был отключен. Я также использую Plesk.
Дэвид Хоуд
0

Перед запуском обновления с Atomic сделайте резервную копию файла php.conf. Затем после завершения обновления перезаписать новый файл старым.

Дэвид Э.
источник
0

У меня была похожая проблема, я понял, что модуль php5 был закомментирован, что означает, что он не может загрузиться, и в phpmyadmin conf он выдавал ошибки из-за наличия php_admin_value, который, вероятно, работал с php5_module, и его не было на месте. Я пошел в httpd.conf и оставил комментарий:

LoadModule php5_module "c:/wamp/bin/php/php5.5.12/php5apache2_4.dll"
Nickool
источник
0

Изменить : После реализации моих комментариев ниже, я обнаружил, что была еще одна причина, по которой я столкнулся с этой проблемой. На сервере реализован 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, проблема связана с тем, что конфигурация prefork 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

ymdahi
источник