เกิดข้อผิดพลาดเริ่มต้น Apache“ ค่า php”


12

หลังจากอัปเดต vps ของฉันฉันได้รับข้อผิดพลาดดังนี้:

ล้มเหลวในการเริ่ม apache: การเริ่มต้น httpd: ข้อผิดพลาดทางไวยากรณ์ในบรรทัดที่ 31 ของ /etc/httpd/conf.d/php.conf: คำสั่งไม่ถูกต้อง 'php_value' อาจผิดพลาดหรือกำหนดโดยโมดูลที่ไม่รวมอยู่ในการกำหนดค่าเซิร์ฟเวอร์ [ล้มเหลว]

เปิดใช้งานโมดูลบน PHP:

[โมดูล PHP] ปฏิทิน bz2 Core ctype curl วันที่ dom ereg exif fileinfo ตัวกรอง ftp gd gettext gmp แฮชไอคอน svv อ่าน ssh imap intl ionCube Loader json libxml mbstring mcrypt mhash mysql mysqli openssl pcntl พีซี sp wddx xml xmlreader xmlrpc xmlwriter xsl zip zlib [โมดูล Zend] ionCube PHP Loader

บรรทัดที่สัมพันธ์กับข้อผิดพลาด:

php_value session.save_handler "ไฟล์"

ข้อผิดพลาดหมายถึงอะไรและฉันจะแก้ไขได้อย่างไร

คำตอบ:


12

ฉันเพิ่งพบปัญหาที่แน่นอนนี้โดยใช้ Plesk 9.5 บน CentOS

ฉันไม่สามารถพูดได้อย่างแน่นอนว่ามันเกิดจากการอัพเดท Plesk หรือไม่ ลูกค้าไม่คิดว่าจะมีการเปลี่ยนแปลงใด ๆ เกิดขึ้นเมื่อเร็ว ๆ นี้ แต่ Apache ไม่สามารถเริ่มต้นด้วยข้อผิดพลาดนี้ได้

หลังจากการตรวจสอบระบบเพื่อให้แน่ใจว่าไม่ได้เกิดจากการฝ่าฝืนฉันทำการแก้ไขปัญหาบางอย่างและพิจารณาว่าmod_phpได้ถูกลบออกจาก Apache config หลังจากตรวจสอบการตั้งค่า 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 ฉันไม่ทราบสาเหตุและไม่มีไดเรกทอรีโมดูลแทนที่จะเป็นไดเรกทอรี mods-available และ mod-enabled ฉันได้เพิ่ม symlinks สำหรับ php7.2.conf และ php7.2.load ไปยัง mods-enabled ที่ชี้ไปยัง mods-available แล้ว apache2 ก็สามารถเริ่มต้นได้
Chris Jenks

6

คำสั่งไม่ถูกต้อง 'php_value' อาจถูกสะกดผิดหรือกำหนดโดยโมดูลที่ไม่รวมอยู่ในการกำหนดค่าเซิร์ฟเวอร์

Apache httpd-2.4 สามารถทำงานล้มเหลวโดยมีข้อผิดพลาดด้านบนหากคุณกำหนดค่าให้ใช้โมดูล mpm อื่น ๆ โดยไม่ได้ตั้งใจ (เนื่องจาก 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

ดังที่ David ให้ความเห็นไว้ก่อนหน้านี้อาจเป็นเพราะ PHP mod ถูกปิดการใช้งานจาก 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 สิ่งที่ฉันต้องกำหนดค่าใหม่ ขอบคุณ
David E.

ฉันลบบรรทัดเหล่านั้นโดยทั่วไปแล้วการรีสตาร์ท apache อาจแก้ไข แต่ฉันต้องกำหนดค่า vhost อีกครั้งใน plesk มันเป็นเพียงปุ่มไม่แน่ใจว่าเทียบเท่าใน cPanel
Jimmy

มันค่อนข้างน่ารำคาญ นี่เป็นส่วนหนึ่งของคอร์ php - คุณต้องกระโดดผ่านห่วงเวลารวบรวมเพื่อปิดการใช้งานการสนับสนุนเซสชั่น และตามคู่มือพวกเขาทั้งสองสามารถเปลี่ยนแปลงได้ใน PHP_INI_ALL (แต่มันอาจจะคุ้มค่าลอง php_admin_value) ตัวจัดการเซสชันของคุณทำงานหรือไม่ คุณใช้ mod_php อยู่หรือไม่?
symcbean

1
เพิ่งเกิดเหตุการณ์นี้ขึ้น การแสดงความคิดเห็นเกี่ยวกับบรรทัดที่กระทำผิดจะอนุญาตให้ Apache เริ่มต้น แต่จะลบการสนับสนุนเซสชันออกจากสิ่งอื่น ๆ โอกาสที่ mod_php ถูกปิดใช้งาน ฉันใช้ Plesk ด้วย
David Houde

0

php.confก่อนที่จะใช้การปรับรุ่นจากอะตอมทำให้การสำรองข้อมูลของไฟล์ จากนั้นหลังจากการอัปเกรดเสร็จสมบูรณ์จะเขียนทับไฟล์ใหม่ด้วยไฟล์เก่า


0

ฉันมีปัญหาที่คล้ายกันตระหนักว่าโมดูล php5 ถูกใส่ความคิดเห็นซึ่งหมายความว่าไม่สามารถโหลดได้และใน phpmyadmin ทำให้เกิดข้อผิดพลาดเนื่องจากมี 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 ปัญหาเกิดจากการกำหนดค่า prefork 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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.