Błąd podczas uruchamiania Apache „wartość php”


12

Po zaktualizowaniu mojego vps pojawia się następujący błąd:

Nie można uruchomić apache: Uruchamianie httpd: błąd składni w wierszu 31 /etc/httpd/conf.d/php.conf: niepoprawna komenda „php_value”, być może niepoprawnie napisana lub zdefiniowana przez moduł nieuwzględniony w konfiguracji serwera [AWARIA]

Włącz moduły w PHP:

[Moduły PHP] bz2 kalendarz Rdzeń ctype curl data dom ereg exif plik informacje filtr ftp gd gettext gmp hash iconv imap intl ionCube Loader json libxml mbstring mcrypt mhash mysql mysqli openssl pcntl pcre PDO pdo_mysql pdo_sqlqliteqar SQL wddx xml xmlreader xmlrpc xmlwriter xsl zip zlib [Moduły Zend] moduł ładujący PHP ionCube

Linia względem błędu:

php_value session.save_handler „pliki”

Co oznacza błąd i jak mogę go naprawić?

Odpowiedzi:


12

Niedawno napotkałem ten problem przy użyciu Plesk 9.5 na CentOS.

Nie mogę powiedzieć na pewno, czy było to spowodowane aktualizacją Pleska, czy nie. Klient uważa, że ​​ostatnio nie wprowadzono żadnych zmian, ale Apache nie uruchomił się z tym błędem.

Po dokonaniu oceny systemu, aby upewnić się, że nie jest to spowodowane naruszeniem, podjąłem rozwiązywanie problemów i stwierdziłem, że mod_phpzostał usunięty z konfiguracji Apache. Po sprawdzeniu ustawień Plesk, każdy vhost w tym pudełku korzystał z FastCGI i SuExec.

Podczas korzystania z FastCGI i SuExec nie można zmieniać dyrektyw PHP w php.conf (FastCGI) i .htaccess (SuExec).

Klient początkowo skomentował obraźliwe linie, ale to przerwało obsługę sesji dla wszystkiego. Jedynym sposobem, w jaki udało mi się to rozwiązać, było ręczne dodanie mod_php z powrotem do httpd.conf.

Dodaj następujący wiersz do sekcji z innymi modułami LoadModule. Upewnij się, że ścieżka (../modules/) jest zgodna z pozostałymi modułami. Są duże szanse, że istnieje on już w systemie i został po prostu usunięty z konfiguracji podczas aktualizacji.

bash# vi /etc/httpd/conf/httpd.conf
LoadModule php5_module ../modules/libphp5.so

bash# apachectl restart

To mnie zaskoczyło i nie mogę powiedzieć na pewno, że przyczyną problemu było uaktualnienie lub czy jest to najlepsza poprawka. Jestem otwarty na komentarze, ale zdecydowanie odradzam komentowanie dyrektyw php, /etc/httpd/conf.d/php.confponieważ może to zepsuć pewne rzeczy.


dzięki David, uratował dzień. Mój dziennik yum pokazuje automatyczną aktualizację php 5.3.26, ale tak naprawdę nie rozumiem, dlaczego httpd.conf został napisany. Pozdrawiam

Dziękuję Ci! Poszedłem do httpd.conf i zobaczyłem, że linia LoadModule php5_module ścieżka_pliku została skomentowana, właśnie usunąłem # i wszystko wróciło do normy.
Nickool,

Ten błąd uzyskałem po aktualizacji z Ubuntu 16.04 do 18.04.1. Nie znam przyczyny i nie ma katalogu modułów, zamiast niego jest dostępny katalog modów i włączony mods. Dodałem dowiązania symboliczne dla php7.2.conf i php7.2.load do włączonych modów, wskazując na dostępne mody, a następnie apache2 mógł się uruchomić.
Chris Jenks,

6

Niepoprawne polecenie „php_value”, być może niepoprawnie napisane lub zdefiniowane przez moduł nieuwzględniony w konfiguracji serwera

Apache httpd-2.4 może się nie powieść z powyższym błędem, jeśli przez pomyłkę skonfigurujesz go do używania innego modułu mpm niż prefork (ponieważ tylko prefork mpm działa dobrze z php w Linuksie (CentOs7 / RHEL7). problem.

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

    LoadModule php5_module moduły / libphp5.so

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

    LoadModule mpm_prefork_module moduły / mod_mpm_prefork.so


1

Może się to zdarzyć, jeśli skonfigurujesz Apache do używania innego MPM niż mod_prefork. Sprawdź, z którego modułu korzysta httpd -Vpolecenie. Powinien pokazać ci coś takiego:

...
Server MPM: prefork
...

Jeśli nie, sprawdź

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

jak opisano tutaj i upewnij się, że następny wiersz jest w nim obecny i nie ma komentarza:

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

W przypadku, gdy potrzebujesz użyć innego modułu niż mod_preforkbędziesz musiał skomentować lub usunąć te wiersze.


1

Jak wcześniej skomentował David, jest to prawdopodobnie spowodowane tym, że mod PHP został wyłączony z Apache2.

Dla mnie pojawił się jako błąd podczas (ponownego) uruchamiania Apache:

Zadanie dla apache2.service nie powiodło się, ponieważ proces kontroli zakończył się z kodem błędu. Aby uzyskać szczegółowe informacje, zobacz „systemctl status apache2.service” i „journalctl -xe”.

Następnie wewnątrz dziennikactl -xe:

AH00526: Błąd składni w wierszu 31 /etc/apache2/sites-enabled/host.conf Niepoprawne polecenie „php_value”, być może niepoprawnie napisane lub zdefiniowane przez moduł nieuwzględniony w konfiguracji serwera

Stało się tak podczas aktualizacji z Ubuntu 17.10 do 18.04 (aw konsekwencji z PHP7.1 do 7.2), co najwyraźniej całkowicie wyłączyło libapache2-mod-php *.

W systemie Ubuntu powinny to naprawić:

sudo a2enmod php7.2
sudo systemctl restart apache2

0

Po prostu skomentuj te linie.

miałem

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

Następnie uruchom „rekonfiguruj, jeśli jesteś w Plesk, a następnie uruchom ponownie apache” - wszystko działa poprawnie. Gdyby tak się stało po aktualizacji plesk # 53 10 minut temu.


Cześć, nie używam Plesk, używam Zpanel. Czego potrzebuję ponownie skonfigurować? Dzięki
David E.

Zasadniczo usunąłem te linie, a następnie restart apache może to naprawić. Ale musiałem ponownie skonfigurować vhost w plesk. To tylko przycisk, nie jestem pewien odpowiednika w cpanelu.
Jimmy

To trochę niepokojące. Jest to część podstawowego php - musisz przeskakiwać obręcze w czasie kompilacji, aby wyłączyć obsługę sesji. I zgodnie z instrukcją, oba można zmieniać w PHP_INI_ALL (ale warto spróbować php_admin_value). Czy Twój moduł obsługi sesji działa? Czy używasz mod_php?
symcbean

1
Właśnie tak się stało. Komentowanie obraźliwych linii pozwoli na uruchomienie Apache, ale między innymi usuwa obsługę sesji. Możliwe, że mod_php został wyłączony. Używam również Pleska.
David Houde

0

Przed uruchomieniem aktualizacji z Atomic wykonaj kopię zapasową pliku php.conf. Następnie po zakończeniu aktualizacji zastąp nowy plik starym.


0

Miałem podobny problem, zdałem sobie sprawę, że moduł php5 został skomentowany, co oznacza, że ​​nie można załadować, a w phpmyadmin conf dawał mi błędy z powodu posiadania php_admin_value, która prawdopodobnie działała z php5_module i nie była na miejscu. Poszedłem na stronę httpd.conf i bez komentarza:

LoadModule php5_module "c:/wamp/bin/php/php5.5.12/php5apache2_4.dll"

0

Edycja : Po zaimplementowaniu moich komentarzy poniżej odkryłem, że był inny powód, dla którego napotkałem ten problem. Serwer ma zaimplementowany PHP-FPM. Część implementacji PHP-FPM oznaczała, że /etc/httpd/conf.d/php.confzostała wyłączona (tj. Zmieniono jej nazwę na php.conf.bak). Ostatnia aktualizacja przyniosła nowy plik php.conf. W rezultacie konfiguracja PHP-FPM powodowała konflikt i powodowała wspomniane błędy. Rozwiązaniem było po prostu zmiana nazwy php.conf na coś podobnego php.conf.bak.feb2019. W rezultacie php.conf nie jest ładowany i dlatego nie ma konfliktu z php-fpm.

/// Przed edycją: /////

Rozwiązaniem dla mnie była kombinacja podanych tutaj odpowiedzi.

Zauważyłem ten błąd po aktualizacji serwera Oracle Linux 7, który nie był długo aktualizowany

Jak zasugerował @dasharathmasirkar, @davidhoude @alexlanger, problem wynika z nadpisania konfiguracji preforków mpm po aktualizacji.

Aby rozwiązać ten problem:

sprawdź /etc/httpd/conf.modules.d/00-mpm.confi upewnij się, że następujący wiersz nie jest komentarzem:

# 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

Upewnij się również, że mpm drugiego pracownika jest zakomentowany, aby nie powodował konfliktu:

# 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

Następnie uruchom ponownie apache: apachectl restart

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.