Saya selalu menjalankan PHP dalam mode ISAPI. Kerugian terbesar dari metode ini adalah stabilitasnya yang buruk. Ketika PHP bermasalah, proses Apache juga akan mati. Belakangan, saya melihat pengenalan di Internet tentang PHP yang berjalan dalam mode FastCGI. Berbagai manfaat yang disebutkan (stabilitas, keamanan, kinerja tinggi) membuat saya memutuskan untuk mencobanya.
Namun, segalanya tidak berjalan semulus yang diharapkan. Saya telah mencari di Google berkali-kali tetapi tidak dapat menemukan informasi apa pun tentang cara menggunakan Apache + FastCGI untuk menjalankan PHP di Windows. Ada beberapa orang yang menggunakan IIS + FastCGI untuk menjalankan PHP. Salah satu artikel menyebutkan bahwa Zend juga merekomendasikan menjalankan PHP dalam mode FastCGI ( http://phplens.com/phpeverywhere/fastcgi-php ).
Setelah beberapa jam eksplorasi, akhirnya saya berhasil mengimplementasikan Apache 1.3 + FastCGI untuk menjalankan PHP.
Persiapan:
Kunjungi pertama http://www.fastcgi.com/dist/ untuk mengunduh mod_fastcgi untuk Apache. Saya menggunakan mod_fastcgi-2.4.2-AP13.dll. Setelah diunduh, salin file ini ke direktori modul Apache.
Download PHP (Saya menggunakan PHP-5.0.4) dan unzip, modifikasi file php.ini sesuai kebutuhan. Perhatikan bahwa Anda tidak perlu menyalin file apa pun dari direktori PHP ke direktori Windows.
Ubah konfigurasi:
Kemudian modifikasi file httpd.conf dan tambahkan baris berikut:
LoadModule fastcgi_module modul/mod_fastcgi-2.4.2-AP13.dll
SkripAlias /fcgi-php5/ "d:/usr/local/php-5.0.4/"
FastCgiServer "d:/usr/local/php-5.0.4/php-cgi.exe" -proses 3
# Catatan: -proses 3 di sini berarti memulai tiga proses php-cgi.exe.
# Untuk detail parameter FastCgiServer, silakan merujuk ke dokumentasi FastCGI.
Aplikasi AddType/x-httpd-fastphp5 .php
Aplikasi tindakan/x-httpd-fastphp5 "/fcgi-php5/php-cgi.exe"
# Keterangan: Ubah kedua kata yang dicetak tebal di atas sesuai dengan lokasi file PHP Anda.
Setelah modifikasi selesai, restart saja Apache.
Pertanyaan Umum:
Menurut banyak eksperimen saya, masalah paling umum terutama disebabkan oleh jalur. Jadi periksa dulu apakah semua jalur di file php.ini dan httpd.conf sudah benar. Yang kedua adalah jika PHP sudah terinstal di sistem sebelumnya, maka C:Windowsphp.ini perlu diganti namanya atau dihapus.
Kedua, periksa apakah direktori tempat file PHP berada memiliki izin yang memadai (saya mengaturnya ke Semua Orang - Kontrol Penuh, bagaimanapun, Anda tidak perlu mempertimbangkan begitu banyak batasan keamanan pada mesin pengembangan).
Keuntungan menjalankan PHP dalam mode FastCGI:
Ada beberapa manfaat utama menjalankan PHP dalam mode FastCGI. Yang pertama adalah ketika PHP gagal, itu tidak akan mematikan Apache, tetapi proses PHP itu sendiri akan crash (tetapi FastCGI akan segera memulai kembali proses PHP baru untuk menggantikan proses yang crash). Kedua, mode FastCGI memiliki performa yang lebih baik saat menjalankan PHP dibandingkan mode ISAPI (awalnya saya menggunakan ApacheBench untuk mengujinya, namun lupa menyimpan hasilnya. Jika tertarik, Anda bisa mengujinya sendiri).
Terakhir, Anda dapat menjalankan PHP5 dan PHP4 secara bersamaan. Mengacu pada file konfigurasi di bawah ini, dua virtual host telah dibuat, satu menggunakan PHP5 dan yang lainnya menggunakan PHP4.
LoadModule fastcgi_module modul/mod_fastcgi-2.4.2-AP13.dll
ScriptAlias /fcgi-php5/ "d:/usr/local/php-5.0.4/"
FastCgiServer "d:/usr/local/php-5.0.4/php-cgi.exe" -proses 3
SkripAlias /fcgi-php4/ "d:/usr/local/php-4.3.11/"
FastCgiServer "d:/usr/local/php-4.3.11/php.exe"
Dengarkan 80
NamaVirtualHost *:80
DocumentRoot d:/www
Indeks Opsi FollowSymlinks MultiViews
Nama Server php5.localhost
Aplikasi AddType/x-httpd-fastphp5 .php
Aplikasi tindakan/x-httpd-fastphp5 "/fcgi-php5/php-cgi.exe"
IndexOptions FancyIndexing FoldersPertama
Indeks Opsi FollowSymLinks MultiViews
AllowOverride Tidak Ada
Perintah izinkan, tolak
Izinkan dari semua
Dengarkan 8080
NamaVirtualHost *:8080
DocumentRootd:/www
Indeks Opsi FollowSymlinks MultiViews
Nama Server php4.localhost
Aplikasi AddType/x-httpd-fastphp4 .php
Aplikasi tindakan/x-httpd-fastphp4 "/fcgi-php4/php.exe"
Indeks Opsi FollowSymLinks MultiViews
AllowOverride Tidak Ada
Perintah izinkan, tolak
Izinkan dari semua
Dengan menggunakan konfigurasi di atas, PHP5 digunakan saat mengakses http://localhost/ , dan PHP4 digunakan saat mengakses http://localhost:8080/ . Jadi selama dikonfigurasi dengan benar, host virtual yang berbeda dapat menggunakan versi PHP yang berbeda.
Beberapa kelemahan mode FastCGI:
Setelah membahas kelebihannya, mari kita bahas kekurangannya. Dari penggunaan saya sebenarnya, mode FastCGI lebih cocok untuk server di lingkungan produksi. Tapi itu tidak cocok untuk mesin pengembangan. Karena ketika menggunakan Zend Studio untuk men-debug program, FastCGI akan mengira bahwa waktu proses PHP telah habis dan menampilkan error 500 pada halaman. Ini sangat menjengkelkan sehingga saya beralih kembali ke mode ISAPI di mesin pengembangan saya.
Terakhir, ada potensi kerentanan keamanan dalam mode FastCGI di Windows. Karena saya belum menemukan cara untuk mengimplementasikan SuEXEC di lingkungan Windows, proses PHP selalu berjalan dengan hak istimewa tertinggi, yang jelas bukan kabar baik dari sudut pandang keamanan.
Kesimpulan:
Penerapan FastCGI pada artikel ini masih pada tahap awal, dan hanya digunakan sebagai titik awal, dengan harapan akan muncul solusi yang lebih matang.