Troubleshooting Error Connection refused pada FastCGI di Apache

Pendahuluan

Ketika Apache gagal terhubung ke backend FastCGI, kamu mungkin akan melihat error seperti ini di log:

[proxy:error] [pid 30777:tid 30891] (111)Connection refused: AH02454: FCGI: attempt to connect to Unix domain socket /tmp/php-cgi-56.sock (localhost:8000) failed
[proxy_fcgi:error] [pid 30777:tid 30891] [client 192.168.122.2:59320] AH01079: failed to make connection to backend: localhost

Kita akan ulas:
☐ Penyebab error
☐ Mengatasi error


Apa Penyebabnya?

Error tersebut mungkin bisa terjadi karena salah satu atau beberapa hal berikut:

  1. PHP FastCGI tidak berjalan
  2. Socket file hilang atau punya izin yang salah
  3. Konfigurasi Apache atau FastCGI salah
  4. Port FastCGI tidak aktif atau konflik dengan proses lain
  5. Apache atau PHP-FPM crash setelah update atau perubahan sistem

Solusi yang Dapat Dilakukan

1. Coba Restart PHP FPM

Cek apakah PHP FastCGI (PHP-FPM) sedang berjalan:

ps aux | grep php

Jika tidak ada proses PHP-FPM yang berjalan, restart layanan PHP-FPM:

systemctl restart php-fpm

Atau, jika versi tertentu yang tidak berjalan, sesuaikan misalnya untuk PHP 5.6.

systemctl restart php5.6-fpm

Jika menjalankan PHP di dalam Docker tanpa --privileged, maka systemd tidak bisa berjalan di dalam container sehingga akan memberikan pesan error Failed to get D-Bus connection: Operation not permitted.

Gunakan perintah service:

service php5.6 restart

Atau jika menggunakan supervisor di aapanel, coba restart layanan PHP melalui panel atau dengan perintah:

supervisorctl restart php5.6-fpm

Jika perintah service tidak ditemukan dan tidak menggunakan supervisor, coba gunakan perintah berikut:

/etc/init.d/php5.6-fpm restart

Bila masih gagal, coba cek isi /etc/init.d/, barangkali service tersebut menggunakan nama berbeda.

ls /etc/init.d/

# Misalnya, muncul output seperti berikut:
# README  bt  httpd  mysqld  php-fpm-56  php-fpm-74  pure-ftpd

# Berarti, nama service php-fpm-56 berbeda dari default (php5.6-fpm)
# Oleh karenanya, untuk restart service jalankan:
/etc/init.d/php-fpm-56 restart

Cek kembali statusnya:

systemctl status php5.6-fpm       # Pakai ini
service php5.6-fpm restart        # Atau pakai ini
supervisorctl status php5.6-fpm   # Atau pakai ini
/etc/init.d/php5.6-fpm restart    # Atau pakai ini
/etc/init.d/php-fpm-56 restart    # Atau pakai ini

Jika statusnya gagal, lihat log error PHP-FPM:

tail -f /var/log/php5.6-fpm.log   # Atau sesuaikan dengan lokasi file log

2️. Periksa File Socket

Cek apakah file socket tersedia:

ls -lah /tmp/php-cgi-56.sock

Jika tidak ada, coba restart PHP-FPM seperti langkah pertama. Jika ada tetapi izinnya salah, atur ulang:

chmod 666 /tmp/php-cgi-56.sock
chown www-data:www-data /tmp/php-cgi-56.sock

Tambahan: Pastikan path socket dalam konfigurasi PHP-FPM sesuai dengan konfigurasi Apache.


3️. Cek Konfigurasi Apache

Pastikan konfigurasi Apache untuk FastCGI benar. File konfigurasi biasanya ada di:

/etc/apache2/sites-available/
/etc/apache2/conf-available/

Cek bagian ini dalam konfigurasi:

<IfModule proxy_fcgi_module>
    <FilesMatch "\.php$">
        SetHandler "proxy:unix:/tmp/php-cgi-56.sock|fcgi://localhost"
    </FilesMatch>
</IfModule>

Jika menggunakan port, pastikan seperti ini:

ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:8000/var/www/html/$1

Simpan perubahan dan reload Apache:

systemctl restart apache2

Tambahan: Cek apakah ada konflik port dengan perintah:

netstat -tulnp | grep 8000

Penutup

Jika error "Connection refused" pada FastCGI terjadi:

Dengan langkah-langkah ini, Apache seharusnya bisa kembali terhubung ke PHP FastCGI dengan normal. Semoga catatan ini dapat membantu.