Mod_php là gì?


108

Trong khi xem qua hướng dẫn Zend , tôi bắt gặp tuyên bố sau:

Lưu ý rằng cài đặt php_flag trong .htaccess chỉ hoạt động nếu bạn đang sử dụng mod_php.

Ai đó có thể giải thích điều đó có nghĩa là gì?

Câu trả lời:


158

mod_phpcó nghĩa là PHP, như một mô-đun Apache .

Về cơ bản, khi tải mod_phpdưới dạng một mô-đun Apache, nó cho phép Apache thông dịch các tệp PHP (chúng được thông dịch bởi mod_php) .


CHỈNH SỬA:(ít nhất) hai cách chạy PHP khi làm việc với Apache:

  • Sử dụng CGI : một quy trình PHP được Apache khởi chạy và chính quy trình PHP đó sẽ thông dịch mã PHP - không phải chính Apache
  • Sử dụng PHP như một mô-đun Apache (được gọi mod_php) : trình thông dịch PHP sau đó được "nhúng" vào bên trong quy trình Apache: không có quy trình PHP bên ngoài - có nghĩa là Apache và PHP có thể giao tiếp tốt hơn.


chỉnh sửa lại, sau khi nhận xét : sử dụng CGI hay mod_phplà tùy bạn: vấn đề chỉ là cấu hình máy chủ web của bạn.

Để biết cách nào hiện đang được sử dụng trên máy chủ của bạn, bạn có thể kiểm tra đầu ra của phpinfo(): phải có một cái gì đó cho biết liệu PHP đang chạy qua mod_php (hoặc mod_php5) hay qua CGI.

Bạn cũng có thể muốn xem php_sapi_name()hàm: nó trả về kiểu giao diện giữa máy chủ web và PHP .


Nếu bạn kiểm tra các tệp cấu hình Apache của mình, khi sử dụng mod_php, sẽ có một LoadModuledòng như sau:

LoadModule php5_module        modules/libphp5.so

(Tên tệp, ở bên phải, có thể khác - ví dụ: trên Windows, nó phải là a .dll)


Tôi đã sử dụng xampp để cài đặt gói php, apache và mysql ... Vì vậy, thiết lập của tôi sẽ như thế nào?
SpikETidE

Bạn nên kích hoạt nó nếu PHP hiện không hoạt động. Nếu PHP đã hoạt động thì nó phải đang sử dụng CGI, trong trường hợp đó, bạn có thể cần phải làm nhiều việc hơn là chỉ kích hoạt mô-đun. Mô-đun thậm chí có thể không tồn tại trên hệ thống.
d11wtq

1
Đúng ..!. Khi tôi chạy phpinfo (), tôi thấy rằng mod_php5 được bao gồm trong phần Mô-đun đã tải .... Và điều đó có nghĩa là tôi đã chạy nó như một mô-đun apache ... phải không?
SpikETidE

3
mod_phpcho đến nay là cấu hình phổ biến nhất.
troelskn

@Pascal, tôi muốn nói mod_phpkhông phải là PHP thực; nó chỉ là một addon của Apache. Hay đúng hơn, tôi nghĩ bạn nên bắt đầu câu trả lời với định nghĩa về PHP chính xác nghĩa là gì?
Pacerier

58

Câu trả lời này được lấy từ TuxRadar :

Khi chạy PHP thông qua máy chủ web của bạn, có hai tùy chọn riêng biệt: chạy nó bằng CGI SAPI của PHP hoặc chạy nó như một mô-đun cho máy chủ web. Mỗi cái đều có những lợi ích riêng, nhưng nhìn chung, mô-đun thường được ưu tiên hơn.

Chạy PHP dưới dạng CGI có nghĩa là về cơ bản bạn cho máy chủ web của mình biết vị trí của tệp thực thi PHP và máy chủ chạy tệp thực thi đó, cung cấp cho nó tập lệnh mà bạn đã gọi, mỗi khi bạn truy cập một trang. Điều đó có nghĩa là mỗi khi bạn tải một trang, PHP cần đọc php.ini và thiết lập cài đặt của nó, nó cần tải tất cả các phần mở rộng của nó và sau đó nó cần bắt đầu công việc phân tích kịch bản - có rất nhiều công việc lặp lại.

Khi bạn chạy PHP dưới dạng mô-đun, PHP thực sự nằm bên trong máy chủ web của bạn - nó chỉ khởi động một lần, tải cài đặt và tiện ích mở rộng của nó một lần và cũng có thể lưu trữ thông tin qua các phiên. Ví dụ: các trình tăng tốc PHP dựa vào việc PHP có thể lưu dữ liệu được lưu trong bộ nhớ cache qua các yêu cầu, điều này là không thể sử dụng phiên bản CGI.

Lợi thế rõ ràng của việc sử dụng PHP làm mô-đun là tốc độ - bạn sẽ thấy tốc độ tăng đáng kể nếu chuyển đổi từ CGI sang mô-đun. Nhiều người, đặc biệt là người dùng Windows, không nhận ra điều này và tiếp tục sử dụng php.exe CGI SAPI, điều này thật đáng tiếc - mô-đun này thường nhanh hơn từ ba đến năm lần.

Tuy nhiên, có một lợi thế chính khi sử dụng phiên bản CGI và đó là PHP đọc cài đặt của nó mỗi khi bạn tải một trang. Với PHP đang chạy dưới dạng mô-đun, bất kỳ thay đổi nào bạn thực hiện trong tệp php.ini sẽ không bắt đầu cho đến khi bạn khởi động lại máy chủ web của mình, điều này làm cho phiên bản CGI thích hợp hơn nếu bạn đang thử nghiệm nhiều cài đặt mới và muốn xem phản hồi tức thì.


@JohannEchavarria, Trừ khi bạn đã thêm nhiều thứ điên rồ, việc khởi động lại máy chủ sẽ chỉ mất vài giây. Đối với các hệ thống hiện đại "bình thường" với SSD, thời gian chưa đến 2 giây.
Pacerier

12

Máy chủ của bạn cần phải cài đặt các mô-đun php để nó có thể phân tích cú pháp mã php.

Nếu bạn đang sử dụng ubuntu, bạn có thể thực hiện việc này dễ dàng với

sudo apt-get install apache2

sudo apt-get install php5

sudo apt-get install libapache2-mod-php5

sudo /etc/init.d/apache2 restart

Nếu không, bạn có thể biên dịch apache bằng php: http://dan.drydog.com/apache2php.html

Chỉ định hệ điều hành máy chủ của bạn sẽ giúp người khác trả lời cụ thể hơn.


5

Điều đó có nghĩa là bạn phải cài đặt PHP như một mô-đun trong Apache, thay vì khởi động nó như một tập lệnh CGI.


3

Chỉ cần thêm vào những câu trả lời này là, mod_php là phương thức lâu đời nhất và chậm nhất có sẵn trong máy chủ HTTPD để sử dụng PHP. Nó không được khuyến khích, trừ khi bạn đang chạy các phiên bản Apache HTTPD và PHP cũ. php-fpm và proxy_cgi là những phương pháp được ưu tiên.


0

mod_php là một trình thông dịch PHP.

Từ tài liệu, một điểm quan trọng của mod_php là,

"mod_php không an toàn cho luồng và buộc bạn phải gắn bó với prefork mpm (đa quy trình, không có luồng), đây là cấu hình chậm nhất có thể"

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.