Apa itu mod_php?

108

Saat melalui tutorial Zend , saya menemukan pernyataan berikut:

Perhatikan bahwa pengaturan php_flag di .htaccess hanya berfungsi jika Anda menggunakan mod_php.

Adakah yang bisa menjelaskan apa artinya?

SpikETidE
sumber

Jawaban:

158

mod_phpberarti PHP, sebagai modul Apache .

Pada dasarnya, saat memuat mod_phpsebagai modul Apache, ini memungkinkan Apache untuk menafsirkan file PHP (yang diinterpretasikan oleh mod_php) .


EDIT: Ada (setidaknya) dua cara menjalankan PHP, saat bekerja dengan Apache:

  • Menggunakan CGI : proses PHP diluncurkan oleh Apache, dan proses PHP itulah yang menafsirkan kode PHP - bukan Apache itu sendiri
  • Menggunakan PHP sebagai modul Apache (disebut mod_php) : interpreter PHP kemudian "disematkan" di dalam proses Apache: tidak ada proses PHP eksternal - yang berarti Apache dan PHP dapat berkomunikasi dengan lebih baik.


Dan edit ulang, setelah komentar : menggunakan CGI ataumod_php terserah Anda: itu hanya masalah konfigurasi webserver Anda.

Untuk mengetahui cara mana yang saat ini digunakan di server Anda, Anda dapat memeriksa output dari phpinfo(): harus ada sesuatu yang menunjukkan apakah PHP dijalankan melalui mod_php (atau mod_php5) , atau melalui CGI.

Anda mungkin juga ingin melihat php_sapi_name()fungsinya: ini mengembalikan tipe antarmuka antara server web dan PHP .


Jika Anda memeriksa file konfigurasi Apache Anda, saat menggunakan mod_php, seharusnya ada LoadModulebaris yang terlihat seperti ini:

LoadModule php5_module        modules/libphp5.so

(Nama file, di sebelah kanan, bisa berbeda - di Windows, misalnya, harus a .dll)

Pascal MARTIN
sumber
Saya menggunakan xampp untuk menginstal paket php, apache dan mysql ... Jadi, apa yang akan saya setup?
SpikETidE
Anda harus mengaktifkannya jika PHP saat ini tidak berfungsi. Jika PHP sudah berfungsi maka harus menggunakan CGI, dalam hal ini Anda mungkin perlu melakukan lebih dari sekedar mengaktifkan modul. Modul tersebut bahkan mungkin tidak ada di sistem.
d11wtq
1
Ya..!. Ketika saya menjalankan phpinfo () saya melihat bahwa mod_php5 termasuk dalam bagian Modul yang Dimuat .... Dan itu berarti saya telah menjalankannya sebagai modul apache ... bukan?
SpikETidE
3
mod_phpsejauh ini merupakan konfigurasi yang paling umum.
troelskn
@ Pascal, menurut saya mod_phpbukan PHP asli; itu hanya addon Apache. Atau lebih tepatnya, saya pikir Anda harus memulai jawaban dengan definisi Apa sebenarnya arti PHP?
Pacerier
58

Jawaban ini diambil dari TuxRadar :

Saat menjalankan PHP melalui server web Anda, ada dua opsi berbeda: menjalankannya menggunakan CGI SAPI PHP, atau menjalankannya sebagai modul untuk server web. Masing-masing memiliki manfaatnya sendiri, tetapi secara keseluruhan, modul umumnya lebih disukai.

Menjalankan PHP sebagai CGI berarti Anda pada dasarnya memberi tahu server web Anda lokasi file yang dapat dieksekusi PHP, dan server menjalankan file yang dapat dieksekusi itu, memberinya skrip yang Anda panggil, setiap kali Anda mengunjungi halaman. Itu berarti setiap kali Anda memuat halaman, PHP perlu membaca php.ini dan menyetel pengaturannya, PHP perlu memuat semua ekstensinya, dan kemudian perlu mulai mengurai skrip - ada banyak pekerjaan yang berulang.

Ketika Anda menjalankan PHP sebagai modul, PHP benar-benar berada di dalam server web Anda - itu dimulai hanya sekali, memuat pengaturan dan ekstensi hanya sekali, dan juga dapat menyimpan informasi di seluruh sesi. Misalnya, akselerator PHP mengandalkan kemampuan PHP untuk menyimpan data cache di seluruh permintaan, yang tidak mungkin dilakukan menggunakan versi CGI.

Keuntungan nyata menggunakan PHP sebagai modul adalah kecepatan - Anda akan melihat peningkatan kecepatan yang besar jika Anda mengonversi dari CGI ke modul. Banyak orang, terutama pengguna Windows, tidak menyadari hal ini, dan terus menggunakan php.exe CGI SAPI, yang memalukan - modul biasanya tiga hingga lima kali lebih cepat.

Ada satu keuntungan utama menggunakan versi CGI, dan itu adalah PHP membaca pengaturannya setiap kali Anda memuat halaman. Dengan PHP yang berjalan sebagai modul, setiap perubahan yang Anda buat di file php.ini tidak akan terjadi sampai Anda me-restart server web Anda, yang membuat versi CGI lebih disukai jika Anda menguji banyak pengaturan baru dan ingin melihat tanggapan instan.

SpikETidE
sumber
@JohannEchavarria, Kecuali Anda telah menambahkan banyak hal gila, memulai ulang server hanya akan memakan waktu beberapa detik. Untuk sistem modern "normal" dengan SSD, waktu kurang dari 2 detik.
Pacerier
12

Server Anda harus memiliki modul php terinstal sehingga dapat mengurai kode php.

Jika Anda menggunakan ubuntu, Anda dapat melakukannya dengan mudah

sudo apt-get install apache2

sudo apt-get install php5

sudo apt-get install libapache2-mod-php5

sudo /etc/init.d/apache2 restart

Jika tidak, Anda dapat mengkompilasi apache dengan php: http://dan.drydog.com/apache2php.html

Menentukan OS server Anda akan membantu orang lain menjawab dengan lebih spesifik.

cdated
sumber
5

Ini berarti Anda harus menginstal PHP sebagai modul di Apache, alih-alih memulainya sebagai skrip CGI.

Ondrej Slinták
sumber
3

Hanya untuk menambahkan jawaban ini adalah bahwa, mod_php adalah metode tertua dan paling lambat yang tersedia di server HTTPD untuk menggunakan PHP. Ini tidak disarankan, kecuali Anda menjalankan Apache HTTPD dan PHP versi lama. php-fpm dan proxy_cgi adalah metode yang disukai.

Tejas Sarade
sumber
0

mod_php adalah juru bahasa PHP.

Dari dokumen, salah satu tangkapan penting mod_php adalah,

"mod_php bukan thread safe dan memaksa Anda untuk tetap menggunakan mpm prefork (multi proses, tanpa thread), yang merupakan konfigurasi paling lambat"

kta
sumber