Lỗi bắt đầu Apache Apache giá trị php


12

Sau khi cập nhật vps của tôi, tôi gặp lỗi sau:

Không thể bắt đầu apache: Bắt đầu httpd: Lỗi cú pháp trên dòng 31 của /etc/httpd/conf.d/php.conf: Lệnh không hợp lệ 'php_value', có thể bị sai chính tả hoặc được xác định bởi một mô-đun không có trong cấu hình máy chủ [FAILED]

Kích hoạt các mô-đun trên PHP:

[Mô-đun PHP] Lịch bz2 Lõi 2 wddx xml xmlreader xmlrpc xmlwriter xsl zip zlib [Mô-đun Zend] Trình tải PHP ionCube

Dòng liên quan đến lỗi:

php_value session.save_handler "tập tin"

Lỗi này có nghĩa là gì và làm cách nào để khắc phục?

Câu trả lời:


12

Gần đây tôi đã gặp phải vấn đề chính xác này khi sử dụng Plesk 9.5 trên CentOS.

Tôi không thể nói chắc chắn liệu đó có phải là do cập nhật lên Plesk hay không. Khách hàng không nghĩ rằng bất kỳ thay đổi nào đã được thực hiện gần đây, nhưng Apache đã không bắt đầu với lỗi này.

Sau khi đánh giá hệ thống để đảm bảo rằng nó không phải do vi phạm, tôi đã thực hiện một số khắc phục sự cố và xác định rằng mod_phpđã bị xóa khỏi cấu hình Apache. Sau khi kiểm tra cài đặt Plesk, mọi vhost trên hộp đều sử dụng FastCGI và SuExec.

Khi sử dụng FastCGI và SuExec, bạn không thể thay đổi các chỉ thị PHP trong php.conf (FastCGI) và .htaccess (SuExec).

Khách hàng ban đầu đã nhận xét các dòng vi phạm, nhưng điều này đã phá vỡ hỗ trợ phiên cho tất cả mọi thứ. Cách duy nhất tôi có thể giải quyết nó là thêm thủ công mod_php trở lại httpd.conf.

Thêm dòng sau vào phần với các LoadModule khác. Đảm bảo đường dẫn (../modules/) khớp với phần còn lại của các mô-đun trong đó. Rất có thể nó đã tồn tại trên hệ thống của bạn và đã bị xóa khỏi cấu hình trong quá trình cập nhật.

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

bash# apachectl restart

Điều này khiến tôi mất cảnh giác và tôi không thể nói chắc chắn đó là bản nâng cấp gây ra sự cố hay liệu đây có phải là cách khắc phục tốt nhất. Tôi mở để bình luận, nhưng rất khuyến khích không bình luận về các chỉ thị php /etc/httpd/conf.d/php.confvì nó sẽ phá vỡ mọi thứ.


cảm ơn David, đã cứu ngày Nhật ký yum của tôi hiển thị bản cập nhật tự động lên php 5.3.26 nhưng không thực sự hiểu tại sao httpd.conf bị ghi đè. Trân trọng

Cảm ơn bạn! Tôi đã truy cập httpd.conf và tôi thấy rằng dòng đường dẫn LoadModule php5_module đã được nhận xét, tôi chỉ xóa # và mọi thứ trở lại bình thường.
Nickool

Tôi đã gặp lỗi này sau khi nâng cấp từ Ubuntu 16.04 lên 18.04.1. Tôi không biết nguyên nhân và không có thư mục mô-đun, thay vào đó là thư mục có sẵn mod và mod. Tôi đã thêm symlink cho php7.2.conf và php7.2.load để mod kích hoạt trỏ đến mod có sẵn và sau đó apache2 đã có thể bắt đầu.
Chris Jenks

5

Lệnh 'php_value' không hợp lệ, có thể sai chính tả hoặc được xác định bởi một mô-đun không có trong cấu hình máy chủ

Apache httpd-2.4 có thể không thành công với lỗi trên nếu bạn nhầm cấu hình nó sử dụng mô-đun mpm khác so với prefork (vì chỉ prefork mpm hoạt động tốt với php trên Linux (CentOs7 / RHEL7). Sửa cấu hình Apache httpd để sử dụng prefork mpm sẽ giải quyết vấn đề.

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

    Các mô-đun LoadModule php5_module / libphp5.so

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

    Các mô-đun LoadModule mpm_prefork_module / mod_mpm_prefork.so


1

Điều này có thể xảy ra nếu bạn định cấu hình Apache để sử dụng MPM khác ngoài mod_prefork. Kiểm tra mô-đun nào được sử dụng bằng httpd -Vlệnh. Nó sẽ cho bạn thấy một cái gì đó như:

...
Server MPM: prefork
...

Nếu không, hãy kiểm tra

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

như được mô tả ở đây và đảm bảo dòng tiếp theo có mặt trong đó và không bị lỗi:

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

Trong trường hợp bạn cần sử dụng mô-đun khác, mod_preforkbạn sẽ phải bình luận hoặc xóa các dòng này.


1

Như David đã nhận xét trước đây, điều này có thể là do mod PHP đã bị vô hiệu hóa từ Apache2.

Đối với tôi, nó xuất hiện như một lỗi khi (tái) khởi động Apache:

Công việc cho apache2.service không thành công vì quá trình kiểm soát đã thoát với mã lỗi. Xem "trạng thái systemctl apache2.service" và "Tạp chí -xe" để biết chi tiết.

Sau đó, bên trong tạp chí -xe:

AH00526: Lỗi cú pháp trên dòng 31 của /etc/apache2/sites-enables/host.conf Lệnh không hợp lệ 'php_value', có thể bị sai chính tả hoặc được xác định bởi một mô-đun không có trong cấu hình máy chủ

Điều này xảy ra khi nâng cấp từ Ubuntu 17.10 lên 18.04 (và do đó, từ PHP7.1 lên 7.2), rõ ràng đã vô hiệu hóa libapache2-mod-php *.

Trên Ubuntu, sau đây nên sửa nó:

sudo a2enmod php7.2
sudo systemctl restart apache2

0

Chỉ cần bình luận những dòng ra.

Tôi đã có

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

Sau đó chạy "cấu hình lại nếu bạn ở Plesk, sau đó khởi động lại apache" dường như hoạt động tốt. Điều này đã xảy ra sau khi cập nhật plesk # 53 phút trước.


Xin chào, tôi không sử dụng Plesk, sử dụng Zpanel. Những gì tôi cần cấu hình lại? Cảm ơn
David E.

Về cơ bản tôi đã loại bỏ những dòng đó và sau đó khởi động lại apache có thể khắc phục nó. Nhưng tôi đã phải cấu hình lại vhost trong plesk. Nó chỉ là một nút, không chắc chắn tương đương trong cpanel.
Jimmy

Điều này hơi đáng lo ngại. Đây là một phần của php lõi - bạn cần phải vượt qua các vòng trong thời gian biên dịch để vô hiệu hóa hỗ trợ phiên. Và theo hướng dẫn, cả hai đều có thể thay đổi trong PHP_INI_ALL (nhưng có thể đáng để thử php_admin_value). Trình xử lý phiên của bạn có hoạt động không? Bạn đang sử dụng mod_php?
symcbean

1
Chỉ cần có điều này xảy ra. Nhận xét các dòng vi phạm sẽ cho phép Apache bắt đầu, nhưng loại bỏ hỗ trợ phiên trong số những thứ khác. Có thể mod_php đã bị vô hiệu hóa. Tôi cũng đang sử dụng Plesk.
David Houde

0

Trước khi chạy nâng cấp từ Atomic, hãy sao lưu tệp php.conf. Sau đó, sau khi nâng cấp hoàn thành ghi đè lên tệp mới với tệp cũ.


0

Tôi đã gặp vấn đề tương tự, nhận ra rằng mô-đun php5 đã được nhận xét, điều đó có nghĩa là không thể tải và trong phpmyadmin, nó đã gây ra lỗi cho tôi vì có php_admin_value có thể đang hoạt động với php5_module và nó không hoạt động. Tôi đã truy cập httpd.conf và không bị lỗi:

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

0

Chỉnh sửa : Sau khi thực hiện các bình luận của tôi dưới đây, tôi thấy rằng có một lý do khác khiến tôi gặp phải vấn đề này. Máy chủ đã triển khai PHP-FPM. Một phần của việc triển khai PHP-FPM có nghĩa là /etc/httpd/conf.d/php.confđã bị vô hiệu hóa (nghĩa là được đổi tên thành php.conf.bak). Bản cập nhật gần đây đã mang đến một php.conf mới. Kết quả là cấu hình PHP-FPM bị xung đột và gây ra các lỗi được đề cập. Cách khắc phục chỉ đơn giản là đổi tên php.conf thành một cái gì đó như php.conf.bak.feb2019. Do đó, php.conf không được tải và do đó không có xung đột với php-fpm.

/// Trước khi chỉnh sửa: /////

Giải pháp cho tôi là sự kết hợp của các câu trả lời được cung cấp ở đây.

Tôi nhận thấy lỗi này sau khi cập nhật máy chủ Oracle Linux 7 không được cập nhật trong một thời gian dài

Theo đề xuất của @dasharathmasirkar, @davidhoude @alexlanger, vấn đề bắt nguồn từ mpm prefork config bị ghi đè sau khi cập nhật.

Để giải quyết vấn đề này:

kiểm tra /etc/httpd/conf.modules.d/00-mpm.confvà đảm bảo rằng dòng sau không bị lỗi:

# 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

Ngoài ra, hãy chắc chắn rằng mpm worker khác được bình luận để nó không xung đột:

# 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

Sau đó khởi động lại apache: apachectl restart

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.