Помилка запуску Apache "php value"


12

Після оновлення vps я отримую наступну помилку:

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

Увімкнути модулі на PHP:

[РНР модулі] BZ2 календаря Основний дата CType локона будинок EREG EXIF ​​FileInfo фільтр FTP Г.Д. Gettext ГМФА хеш Iconv IMAP аероропорт IonCube Навантажувач JSON LibXML MBstring Mcrypt Mhash MySQL MySQLi OpenSSL pcntl PCRE ПДО PDO_MySQL Pdo_Sqlite Phar Readline Відображення сеанс shmop SimpleXML гніздо SPL sqlite3 стандарт Suhosin токенізатор wddx xml xmlreader xmlrpc xmlwriter xsl zip zlib [Zend Modules] ionCube PHP Loader

Рядок відносно помилки:

php_value session.save_handler "файли"

Що означає помилка та як її виправити?

Відповіді:


12

Нещодавно я зіткнувся з цією точною проблемою, використовуючи Plesk 9.5 на CentOS.

Я не можу точно сказати, спричинено це оновленням до Плеску, чи ні. Клієнт не вважає, що зміни були внесені останнім часом, але 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 модулі / libphp5.so

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

    LoadModule mpm_prefork_module модулі / 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

0

Просто прокоментуйте ці рядки.

я мав

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

Потім запустіть "перенастроювати, якщо ваш в Plesk, а потім перезапустити apache", здавалося, працює нормально. Це сталося після оновлення plesk №53 10 хвилин тому.


Привіт, я не використовую Plesk, використовую Zpanel. Що мені потрібно переналаштувати? Спасибі
Девід Е.

Я в основному видалив ці рядки, і тоді перезапуск апачу може виправити це. Але мені довелося переконфігурувати 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"

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, проблема випливає з того, що після оновлення буде відмінено конфігурацію mpm prefork.

Щоб вирішити це:

перевірте /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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.