Kesalahan Mulai Apache "nilai php"

12

Setelah memperbarui vps saya, saya mendapatkan kesalahan ikuti:

Gagal memulai apache: Memulai httpd: Kesalahan sintaks pada baris 31 dari /etc/httpd/conf.d/php.conf: Perintah 'php_value' tidak valid, mungkin salah eja atau ditentukan oleh modul yang tidak termasuk dalam konfigurasi server [GAGAL]

Aktifkan modul di PHP:

[Modul PHP] bz2 kalender Inti ctype ikl tanggal dom ereg exif fileinfo filter ftp gd gettext gmp hash ikonv imap intl ionCube Loader json libxml mbstring mcrypt mhash mysql mysqli openssl pcntl pcrel PDO pdo_mysmemisahlebihlebihlebihlebih baik lajurterlebih baik. wddx xml xmlreader xmlrpc xmlwriter xsl zip zlib [Modul Zend] the ionCube PHP Loader

Garis relatif terhadap kesalahan:

php_value session.save_handler "files"

Apa arti kesalahan dan bagaimana cara memperbaikinya?

David E.
sumber

Jawaban:

12

Saya baru-baru ini mengalami masalah yang tepat ini menggunakan Plesk 9.5 pada CentOS.

Saya tidak bisa mengatakan dengan pasti apakah itu disebabkan oleh pembaruan ke Plesk, atau tidak. Pelanggan tidak berpikir ada perubahan yang dibuat baru-baru ini, tetapi Apache gagal memulai dengan kesalahan ini.

Setelah penilaian sistem untuk memastikan itu bukan karena pelanggaran, saya melakukan beberapa pemecahan masalah dan memutuskan bahwa mod_phptelah dihapus dari konfigurasi Apache. Setelah memeriksa pengaturan Plesk, setiap vhost di kotak menggunakan FastCGI dan SuExec.

Saat menggunakan FastCGI dan SuExec, Anda tidak dapat mengubah arahan PHP di php.conf (FastCGI) dan .htaccess (SuExec).

Pelanggan awalnya mengomentari garis yang menyinggung, tetapi ini mematahkan dukungan sesi untuk semuanya. Satu-satunya cara saya dapat menyelesaikannya adalah dengan menambahkan mod_php secara manual kembali ke httpd.conf.

Tambahkan baris berikut ke bagian dengan LoadModule lainnya. Pastikan path (../modules/) cocok dengan modul-modul lainnya di sana. Peluangnya bagus karena sudah ada di sistem Anda dan hanya dihapus dari konfigurasi selama pembaruan.

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

bash# apachectl restart

Ini membuat saya lengah, dan saya tidak bisa mengatakan dengan pasti bahwa pemutakhiran yang menyebabkan masalah atau apakah ini perbaikan terbaik. Saya terbuka untuk berkomentar, tetapi sangat menyarankan untuk tidak mengomentari arahan php /etc/httpd/conf.d/php.confkarena hal itu akan merusak barang.

David Houde
sumber
terima kasih David, selamat hari itu. Log yum saya menunjukkan pembaruan otomatis ke php 5.3.26 tetapi tidak benar-benar mengerti mengapa httpd.conf selesai ditulis. Salam
Terima kasih! Saya pergi ke httpd.conf dan saya melihat bahwa jalur LoadModule php5_module pathfilename telah dikomentari, saya baru saja menghapus # dan semuanya kembali normal.
Nickool
Saya mendapatkan kesalahan ini setelah upgrade dari Ubuntu 16.04 ke 18.04.1. Saya tidak tahu penyebabnya dan tidak ada direktori modul, sebagai gantinya direktori mod-available dan mod-enabled. Saya menambahkan symlinks untuk php7.2.conf dan php7.2.load ke mods-enabled yang menunjuk ke mods-available dan kemudian apache2 dapat memulai.
Chris Jenks
5

Perintah 'php_value' tidak valid, mungkin salah eja atau ditentukan oleh modul yang tidak termasuk dalam konfigurasi server

Apache httpd-2.4 dapat gagal dengan kesalahan di atas jika Anda secara tidak sengaja mengonfigurasinya untuk menggunakan modul mpm lain dari prefork (karena hanya prefork mpm yang berfungsi baik dengan php di Linux (CentOs7 / RHEL7). Memperbaiki konfigurasi Apache httpd untuk menggunakan prefork mpm akan menyelesaikan masalah.

  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

dasharath masirkar
sumber
1

Ini bisa terjadi jika Anda mengkonfigurasi Apache untuk menggunakan MPM selain mod_prefork. Periksa modul apa yang digunakan olehhttpd -V perintah. Seharusnya menunjukkan sesuatu seperti:

...
Server MPM: prefork
...

Jika tidak, periksa

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

seperti dijelaskan di sini dan pastikan baris berikutnya ada di dalamnya dan tidak diberi komentar:

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

Jika Anda perlu menggunakan modul lain daripada mod_preforkAnda harus mengomentari atau menghapus baris ini.

Alex Langer
sumber
1

Seperti yang dikomentari oleh David sebelumnya, ini kemungkinan karena mod PHP telah dinonaktifkan dari Apache2.

Bagi saya, itu muncul sebagai kesalahan ketika (kembali) memulai Apache:

Pekerjaan untuk apache2.service gagal karena proses kontrol keluar dengan kode kesalahan. Lihat "systemctl status apache2.service" dan "journalctl -xe" untuk detailnya.

Kemudian, di dalam journalctl -xe:

AH00526: Kesalahan sintaks pada baris 31 pada /etc/apache2/sites-enabled/host.conf Perintah 'php_value' tidak valid, mungkin salah eja atau ditentukan oleh modul yang tidak termasuk dalam konfigurasi server

Ini terjadi ketika memutakhirkan dari Ubuntu 17.10 ke 18.04 (dan sebagai akibatnya dari PHP7.1 ke 7.2), yang tampaknya menonaktifkan libapache2-mod-php * sepenuhnya.

Di Ubuntu, yang berikut ini harus memperbaikinya:

sudo a2enmod php7.2
sudo systemctl restart apache2
ywarnier
sumber
0

Komentari saja kalimat-kalimat itu.

Saya punya

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

Kemudian jalankan "konfigurasi ulang jika Anda di Plesk, lalu restart apache" tampaknya berfungsi dengan baik. Apakah ini terjadi setelah pembaruan plesk # 53 10 menit yang lalu.

Jimmy
sumber
Hai, saya tidak menggunakan Plesk, menggunakan Zpanel. Apa yang perlu saya konfigurasi ulang? Terima kasih
David E.
Saya pada dasarnya menghapus baris-baris itu dan kemudian restart apache dapat memperbaikinya. Tetapi saya harus mengkonfigurasi ulang vhost di plesk. Ini hanya sebuah tombol, tidak yakin sama dengan cpanel.
Jimmy
Ini agak mengganggu. Ini adalah bagian dari php inti - Anda harus melompat melewati lingkaran pada waktu kompilasi untuk menonaktifkan dukungan sesi. Dan menurut manual, keduanya dapat diubah dalam PHP_INI_ALL (tetapi mungkin layak untuk mencoba php_admin_value). Apakah pengendali sesi Anda berfungsi? Apakah Anda menggunakan mod_php?
symcbean
1
Baru saja ini terjadi. Mengomentari baris yang menyinggung akan memungkinkan Apache untuk memulai, tetapi menghilangkan dukungan sesi antara lain. Peluang mod_php dinonaktifkan. Saya menggunakan Plesk juga.
David Houde
0

Sebelum menjalankan pemutakhiran dari Atomic, buat cadangan file php.conf . Kemudian setelah upgrade selesai menimpa file baru dengan yang lama.

David E.
sumber
0

Saya memiliki masalah yang sama, menyadari bahwa modul php5 dikomentari, yang berarti tidak dapat memuat dan di phpmyadmin conf itu memberi saya kesalahan karena memiliki php_admin_value yang mungkin bekerja dengan php5_module dan tidak ada di tempatnya. Saya pergi ke httpd.conf dan tidak berkomentar:

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

Sunting : Setelah menerapkan komentar saya di bawah, saya menemukan bahwa ada alasan lain saya mengalami masalah ini. Server menerapkan PHP-FPM. Bagian dari implementasi PHP-FPM berarti yang /etc/httpd/conf.d/php.confdinonaktifkan (yaitu diubah namanya menjadi php.conf.bak). Pembaruan terakhir membawa php.conf baru. Akibatnya konfigurasi PHP-FPM bertentangan dan menyebabkan kesalahan yang disebutkan. Cara mengatasinya adalah dengan mengubah nama php.conf menjadi sesuatu sepertiphp.conf.bak.feb2019 . Akibatnya, php.conf tidak dimuat dan oleh karena itu tidak ada konflik dengan php-fpm.

/// Sebelum edit: /////

Solusi bagi saya adalah kombinasi dari jawaban yang diberikan di sini.

Saya perhatikan kesalahan ini setelah memperbarui server Oracle Linux 7 yang lama tidak diperbarui

Seperti yang disarankan oleh @dasharathmasirkar, @davidhoude @alexlanger, masalahnya berasal dari konfigurasi prefork mpm yang diganti setelah pembaruan.

Untuk mengatasi ini:

periksa /etc/httpd/conf.modules.d/00-mpm.confdan pastikan bahwa baris berikut tidak diomortasikan:

# 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

Juga, pastikan bahwa mpm pekerja lain dikomentari sehingga tidak bertentangan:

# 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

Kemudian restart apache: apachectl restart

ymdahi
sumber