jika php-cgi hanya digunakan secara local alias secara fisik tidak
terpisah dengan web servernya sebaiknya gunakan soket php saja karena
selain lebih aman, proses kompilasi kode php akan lebih cepat. saya
menggunakan wrapper `spawn-fcgi' untuk menjalankan php-cgi. misalnya
seperti ini:
Catatan:
Untuk masalah koneksi php ke mysql dengan cara di atas pun telah berhasil, karena sebelumnya tidak berhasil tapi kali ini berhasil..
/usr/bin/spawn-fcgi -U nobody -G nobody -d /var/run/fcgi -s /tmp/fcgi.sock -M 0777 -F 2 -P /var/run/fcgi/fcgi.pid -- /usr/bin/php-cgiTernyata dari perintah sebelumnya kan saya menggunakan php-cgi pada alamat 127.0.0.1 dan port 9000. Jadi otomatis port 9000 itu terbuka. Jalankan saja perintah ini:
# netstat -tulpn | grep 9000Dan hasilnya kira-kira seperti ini:
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 9443/php-cgiOke untuk mengantipasi itu maka lakukanlah perintah ini:
- Matikan dahulu proses dari php-cgi dengan perintah:
# killall php-cgi
- Jalankan perintah dibawah ini (Sebelumnya download dan install spawn-fcgi dulu ya di http://pkgs.org/search/?keyword=spawn-fcgi):
# /usr/bin/spawn-fcgi -U nobody -G nobody -d /var/run/fcgi -s /tmp/fcgi.sock -M 0777 -F 2 -P /var/run/fcgi/fcgi.pid -- /usr/bin/php-cgi
- Maka apabila benar, maka hasilnya seperti ini:
spawn-fcgi: child spawned successfully: PID: 9482
spawn-fcgi: child spawned successfully: PID: 9483 - Sekarang saatnya membuktikan apakah port 9000 terbuka.
# netstat -tulpn | grep 9000
- Maka tidak ada hasil apa-apa kan? Coba lagi dengan perintah ini:
# nmap localhost
Keluarannya di terminal
Starting Nmap 5.51 ( http://nmap.org ) at 2012-02-15 13:22 WIT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000060s latency).
Not shown: 994 closed ports
PORT STATE SERVICE
22/tcp open ssh
37/tcp open time
80/tcp open http
113/tcp open auth
3306/tcp open mysql
6000/tcp open X11
Nmap done: 1 IP address (1 host up) scanned in 0.11 seconds
- Nah gak ada port 9000 yang terbuka kan? Kenapa?
Karena disini menggunakan soket php aja seperti yang dibilang om Walecha di atas.He
- Sekarang rubah nginx.conf menjadi seperti ini:
# location ~ \.php$ {
root /srv/httpd/htdocs;
fastcgi_pass unix:/tmp/fcgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME script$fastcgi_script_name;
include fastcgi_params;
#fastcgi_param HTTPS on;
fastcgi_intercept_errors on;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
} - Dari tampilan di atas, yang dirubah di bagian location ~ \.php$ { dan yang saya tebalkan saja ya? Selebihnya sama dengan nginx sebelumnya
- Sekarang coba restart nginx-nya:
# killall nginx
# /etc/rc.d/rc.nginx start - Langkah terakhir adalah dengan mematikan services autostart php-cgi
di rc.M yang sebelumnya sudah saya edit waktu itu dan merubahnya
menjadi:
# Start php-cgi;
#if [ -x /usr/bin/php-cgi ]; then
# . /etc/rc.d/rc.php-cgi start
#fi - Oke sekarang buka localhost/info.php (ingat info.php sudah di buat sebelumnya dengan isinya: )
Catatan:
Untuk masalah koneksi php ke mysql dengan cara di atas pun telah berhasil, karena sebelumnya tidak berhasil tapi kali ini berhasil..