PHP-FPM Pool Failed to Start: Cara Diagnosis dan Memperbaikinya

Yusuf
By: Yusuf October Tue 2026
PHP-FPM pool failed to start

Server Solusi – Ketika PHP-FPM gagal menjalankan pool, website yang menggunakan PHP bisa tiba-tiba menampilkan HTTP 502 Bad Gateway, mengalami gangguan saat memproses halaman dinamis, atau tidak bisa menjalankan PHP sama sekali. Kondisi ini sering ditemukan ketika konfigurasi pool diubah, versi PHP diperbarui, atau pengaturan socket tidak lagi sesuai dengan konfigurasi web server.

Pesan PHP-FPM pool failed to start sendiri belum cukup untuk menentukan penyebabnya. Error tersebut bisa berasal dari kesalahan sintaks konfigurasi, nama pengguna yang tidak valid, direktori socket yang bermasalah, konflik alamat listen, atau keterbatasan resource server.

Dalam troubleshooting, saya menyarankan untuk memeriksa log dan memvalidasi konfigurasi sebelum mengubah file atau me-restart layanan berulang kali. Dengan begitu, kamu bisa mempersempit penyebab berdasarkan bukti, bukan menebak-nebak pengaturan yang harus diganti.

Perlu dicatat, karena belum ada log aktual atau detail konfigurasi server yang diberikan, panduan berikut membahas beberapa skenario yang mungkin terjadi, bukan mengklaim bahwa satu penyebab tertentu sudah ditemukan atau berhasil diperbaiki.

Mengapa PHP-FPM pool gagal berjalan?

PHP-FPM pool gagal berjalan ketika proses PHP-FPM tidak dapat membaca konfigurasi pool atau memulai prosesnya dengan pengaturan yang tersedia. Penyebab yang umum meliputi kesalahan pada file konfigurasi pool, pengguna atau grup sistem yang tidak tersedia, socket yang tidak dapat dibuat, serta konflik port atau alamat socket.

Pemeriksaan awal yang paling aman adalah melihat status service, membaca log terbaru, dan menjalankan pengujian konfigurasi PHP-FPM. Setelah penyebabnya diketahui, perbaiki bagian yang bermasalah lalu validasi konfigurasi sebelum melakukan reload atau restart layanan.

Gejala dan kemungkinan penyebab

Pesan yang muncul saat PHP-FPM gagal berjalan bisa berbeda menurut distribusi Linux, versi PHP, dan cara service dikelola. Perhatikan pesan lengkapnya, bukan hanya status failed.

Gejala atau pesan logKemungkinan penyebabPemeriksaan berikutnya
failed to load configuration fileFile konfigurasi tidak ditemukan atau path salahPeriksa unit service dan lokasi konfigurasi
unknown entry atau unknown directiveDirective tidak dikenal atau salah penulisanJalankan pengujian konfigurasi
user ... does not existAkun sistem pada konfigurasi pool tidak tersediaPeriksa nama user dan group
Address already in usePort sudah digunakan atau alamat listen mengalami konflikPeriksa konfigurasi pool dan port
Permission deniedAkses ke socket atau direktori ditolakPeriksa permission dan kepemilikan
unable to bind listening socketSocket atau alamat listen tidak bisa digunakanPeriksa path, port, dan konflik
server reached pm.max_childrenPool kehabisan slot worker, bukan selalu kegagalan startupPeriksa beban dan konfigurasi worker
Failed with result 'exit-code'Service berhenti dengan kode keluarPeriksa log beberapa baris sebelumnya

PHP-FPM mendukung beberapa pool dengan pengaturan pengguna, proses, dan alamat FastCGI yang berbeda. Setiap pool memiliki konfigurasi sendiri, sehingga satu pool yang bermasalah perlu diperiksa tanpa langsung mengubah seluruh instalasi PHP.

Baca JugaCara Mengatasi PHP Memory Exhausted di VPS Linux
Cara Mengatasi PHP Memory Exhausted di VPS Linux

Kesalahan konfigurasi setelah perubahan PHP

Masalah ini dapat muncul setelah pembaruan versi PHP, penyalinan konfigurasi dari server lain, atau perubahan manual pada file pool.

Contohnya, sebuah pool mengacu pada user yang sudah dihapus atau menggunakan directive yang tidak dikenali oleh versi PHP-FPM yang sedang dijalankan.

Cara membedakannya adalah dengan menjalankan pemeriksaan konfigurasi menggunakan binary PHP-FPM yang tepat. Jika pengujian gagal, selesaikan error konfigurasi terlebih dahulu sebelum mencoba menjalankan service kembali.

Konflik socket antara PHP-FPM dan web server

Nginx atau Apache harus terhubung ke endpoint FastCGI yang benar. Endpoint tersebut dapat berupa socket Unix, misalnya /run/php/php8.3-fpm.sock, atau alamat TCP seperti 127.0.0.1:9000.

Jika dua pool mencoba menggunakan alamat yang sama, salah satu pool mungkin gagal membuat listener. Sebaliknya, jika PHP-FPM berhasil berjalan tetapi Nginx menunjuk ke socket yang salah, website tetap bisa menghasilkan 502 Bad Gateway.

Karena itu, bedakan antara pool gagal start dan web server gagal terhubung ke pool yang sudah berjalan. Keduanya berkaitan, tetapi penanganannya tidak selalu sama.

Proses diagnosis PHP-FPM pool failed to start

Contoh berikut menggunakan Linux dengan systemd, seperti Ubuntu atau Debian. Nama service dan path konfigurasi dapat berbeda pada AlmaLinux, Rocky Linux, CentOS, instalasi PHP dari repository pihak ketiga, atau server yang dikelola melalui panel hosting.

1. Periksa status service PHP-FPM

Pertama, cari nama service yang benar:

systemctl list-units --type=service --all | grep -E 'php.*fpm'

Perintah ini menampilkan service yang namanya cocok dengan pola PHP-FPM. Contohnya, pada sebagian sistem Ubuntu, service dapat bernama php8.3-fpm.service.

Setelah menemukan nama yang tepat, periksa statusnya:

sudo systemctl status php8.3-fpm --no-pager -l

Ganti php8.3-fpm sesuai nama service di servermu.

Perhatikan bagian Active, Result, kode keluar, dan pesan error terakhir. Status failed hanya menunjukkan service gagal berjalan; penyebabnya biasanya perlu dicari di log yang lebih lengkap.

Jika service tidak ditemukan, jangan langsung memasang ulang PHP. Pastikan dahulu versi PHP yang terpasang dan apakah service dikelola oleh systemd, panel hosting, atau mekanisme lain.

Baca JugaLaravel Storage Link Tidak Berfungsi di Hosting? Ini Cara Memperbaikinya
Laravel Storage Link Tidak Berfungsi di Hosting? Ini Cara Memperbaikinya

2. Baca log PHP-FPM dari systemd

Gunakan:

sudo journalctl -u php8.3-fpm -n 100 --no-pager

Perintah ini menampilkan hingga 100 entri log terbaru untuk service tersebut. Jika error terjadi saat boot, kamu juga bisa memeriksa log sejak boot saat ini:

sudo journalctl -b -u php8.3-fpm --no-pager

Cari pesan yang muncul tepat sebelum service dinyatakan gagal. Pesan awal biasanya lebih berguna daripada status akhir karena bisa menunjukkan file konfigurasi, socket, atau akun sistem yang bermasalah.

Jika log systemd tidak memberikan informasi yang cukup, periksa error_log yang ditentukan pada konfigurasi utama PHP-FPM. Lokasinya tidak selalu sama pada setiap instalasi.

3. Uji konfigurasi menggunakan binary yang sesuai

Ini salah satu pemeriksaan paling penting sebelum melakukan restart berulang kali.

Cari binary PHP-FPM yang tersedia:

command -v php-fpmls -l /usr/sbin/php-fpm*

Tidak semua sistem menyediakan binary dengan nama php-fpm; sebagian menggunakan nama versi, misalnya php-fpm8.3.

Jika binary yang sesuai adalah /usr/sbin/php-fpm8.3, jalankan:

sudo /usr/sbin/php-fpm8.3 -t

Opsi -t digunakan untuk menguji konfigurasi. Jika pengujian gagal, baca file dan nomor baris yang disebutkan dalam output, lalu periksa directive terkait.

Jika pengujian berhasil, artinya konfigurasi lolos pemeriksaan sintaks yang dilakukan binary tersebut. Ini belum menjamin service pasti dapat berjalan karena konflik socket, izin akses, atau masalah runtime masih mungkin terjadi. Dokumentasi PHP menjelaskan konfigurasi global PHP-FPM dan pengaturan pool secara terpisah.

4. Temukan file konfigurasi pool yang bermasalah

Pada banyak instalasi Debian dan Ubuntu, konfigurasi pool berada di:

/etc/php/8.3/fpm/pool.d/

Namun, lokasi ini hanya contoh. Instalasi lain mungkin menggunakan /etc/php-fpm.d/ atau direktori khusus dari panel hosting.

Untuk memeriksa nama file konfigurasi:

ls -la /etc/php/8.3/fpm/pool.d/

Kemudian, cari directive yang berkaitan dengan identitas proses dan alamat listener:

grep -nE '^\s*(user|group|listen|listen\.owner|listen\.group|listen\.mode)\s*=' \/etc/php/8.3/fpm/pool.d/*.conf

Sesuaikan path dengan lokasi konfigurasi aktual.

Baca JugaCara Mengatasi Laravel 500 Internal Server Error di VPS
Cara Mengatasi Laravel 500 Internal Server Error di VPS

Perintah tersebut membantu menemukan pengaturan yang aktif secara eksplisit. Namun, hasilnya bukan pengganti pembacaan file lengkap karena konfigurasi dapat menggunakan nilai default atau pengaturan yang berasal dari file lain.

5. Pastikan akun dan resource sistem tersedia

Jika log menyebut user atau group tidak ditemukan, periksa nama yang digunakan oleh pool:

getent passwd www-datagetent group www-data

Contoh ini menggunakan akun www-data yang umum pada Debian dan Ubuntu. Jangan menganggap semua server menggunakan akun tersebut. Nginx, Apache, dan pool PHP-FPM dapat memakai user yang berbeda.

Jika log menunjukkan kegagalan membuat file socket atau file PID, periksa direktori terkait dan izin aksesnya. Untuk masalah kehabisan resource, periksa kondisi memori dan disk:

free -hdf -h

Perintah pertama menampilkan penggunaan memori, sedangkan perintah kedua menunjukkan kapasitas filesystem. Jika kapasitas disk penuh, PHP-FPM mungkin tidak dapat membuat file yang dibutuhkan. Jika memori sangat terbatas, proses worker juga bisa terdampak.

Jangan langsung menaikkan batas worker atau mengubah permission sebelum mengetahui pesan error yang mendasarinya.

Langkah perbaikan berdasarkan hasil diagnosis

Setelah mengetahui pesan error yang sebenarnya, pilih langkah perbaikan yang sesuai. Sebelum mengedit konfigurasi produksi, buat salinan file yang akan diubah agar kamu bisa mengembalikan pengaturan sebelumnya jika diperlukan.

1. Perbaiki kesalahan konfigurasi pool

Jika pengujian php-fpm -t menunjukkan kesalahan pada file pool, buka file yang disebutkan dalam pesan error.

Misalnya:

sudo nano /etc/php/8.3/fpm/pool.d/www.conf

Path tersebut hanya contoh untuk Ubuntu dengan PHP 8.3. Gunakan path yang sesuai dengan hasil diagnosis servermu.

Periksa directive yang disebutkan dalam error, termasuk tanda baca, nama directive, dan nilai yang digunakan. Konfigurasi pool biasanya berisi bagian seperti:

[www]user = www-datagroup = www-datalisten = /run/php/php8.3-fpm.sock

Nilai di atas merupakan contoh, bukan konfigurasi universal. Pastikan akun dan alamat socket sesuai dengan instalasi aktual.

Setelah memperbaiki file, jalankan kembali pengujian:

sudo /usr/sbin/php-fpm8.3 -t

Jika masih gagal, jangan lanjut ke restart. Periksa pesan error berikutnya karena satu file bisa memiliki lebih dari satu kesalahan.

2. Perbaiki user atau group yang tidak ditemukan

Jika log menyebut user not found atau group not found, periksa apakah akun yang ditentukan dalam konfigurasi pool memang tersedia.

Jangan langsung mengganti semua pool menjadi www-data. Pada server dengan banyak website, setiap pool mungkin sengaja menggunakan user terpisah untuk membatasi akses antarwebsite.

Langkah yang lebih aman adalah:

  1. Identifikasi user dan group yang seharusnya digunakan oleh pool.

  2. Periksa apakah akun tersebut masih tersedia.

  3. Cocokkan dengan konfigurasi deployment atau panel hosting.

  4. Perbaiki nilai user atau group hanya jika terbukti tidak sesuai.

  5. Jalankan ulang pengujian konfigurasi.

Jika akun dihapus secara tidak sengaja, pertimbangkan dampaknya terhadap kepemilikan file aplikasi sebelum membuat akun pengganti.

3. Atasi konflik alamat listen atau socket

Jika log menyebut Address already in use atau unable to bind listening socket, periksa apakah beberapa pool menggunakan endpoint yang sama.

Misalnya, dua pool memiliki konfigurasi:

listen = 127.0.0.1:9000

Jika keduanya dijalankan secara bersamaan, keduanya tidak dapat menggunakan alamat dan port yang sama sebagai listener independen.

Periksa semua pool dan tentukan apakah setiap pool seharusnya menggunakan socket atau port tersendiri. Jangan mengubah port secara acak karena Nginx atau Apache mungkin masih mengarah ke endpoint lama.

Untuk memeriksa port TCP yang digunakan:

sudo ss -ltnp

Untuk memeriksa socket Unix yang terkait PHP-FPM:

sudo ss -lxnp | grep -E 'php|fpm'

Jika menggunakan socket Unix, pastikan path-nya benar dan direktori induknya tersedia. Jika socket lama tertinggal, cari tahu apakah masih digunakan oleh proses aktif sebelum menghapus atau menggantinya.

Jangan menghapus socket secara paksa hanya karena file tersebut ditemukan. Pastikan service yang menggunakannya sudah berhenti dan penyebab konfliknya sudah diketahui.

4. Perbaiki permission socket jika pool berjalan tetapi website menghasilkan 502

Ada kondisi ketika PHP-FPM sebenarnya sudah aktif, tetapi Nginx tidak dapat mengakses socket. Dalam kasus ini, masalahnya bukan lagi kegagalan startup pool, melainkan komunikasi antara web server dan PHP-FPM.

Periksa konfigurasi pool, terutama:

listen = /run/php/php8.3-fpm.socklisten.owner = www-datalisten.group = www-datalisten.mode = 0660

Contoh ini berlaku jika konfigurasi server memang menggunakan socket tersebut dan identitas yang sesuai adalah www-data.

Pada Linux, izin socket harus memungkinkan proses web server melakukan koneksi. Sesuaikan listen.owner, listen.group, dan listen.mode dengan user serta group yang sebenarnya. Hindari permission 777 karena dapat memberikan akses berlebihan.

Periksa pula konfigurasi Nginx, biasanya pada blok PHP dalam konfigurasi virtual host:

fastcgi_pass unix:/run/php/php8.3-fpm.sock;

Path tersebut harus sama dengan endpoint yang benar-benar digunakan pool. Jika PHP-FPM memakai TCP, konfigurasi fastcgi_pass juga harus mengikuti alamat TCP yang sesuai.

Setelah mengubah konfigurasi Nginx, validasi sintaksnya sebelum melakukan reload:

sudo nginx -t

Jangan menjalankan reload jika pengujian gagal. Perbaiki error yang dilaporkan terlebih dahulu.

5. Tangani masalah resource atau proses yang terlalu banyak

Jika log mengarah ke kehabisan memori, kegagalan membuat proses, atau keterbatasan resource, periksa kondisi server sebelum mengubah pengaturan pool.

Konfigurasi berikut mengatur jumlah proses pada pool:

pm = dynamicpm.max_children = 10pm.start_servers = 2pm.min_spare_servers = 1pm.max_spare_servers = 3

Nilai tersebut hanya ilustrasi, bukan rekomendasi untuk semua server. Pengaturan yang sesuai bergantung pada konsumsi memori setiap worker, jumlah website, pola trafik, dan resource yang tersedia.

Perlu dibedakan antara pool yang gagal start dan pool yang berjalan tetapi mencapai pm.max_children. Jika service aktif dan log menunjukkan server reached pm.max_children, masalahnya bisa berupa kapasitas pemrosesan yang tidak cukup untuk beban saat itu.

Jangan langsung menaikkan pm.max_children. Jumlah worker yang terlalu tinggi justru dapat menghabiskan memori dan membuat server semakin tidak stabil.

Memulai kembali PHP-FPM dengan aman

Setelah penyebab diperbaiki dan konfigurasi lolos pengujian, kamu dapat mencoba memulai atau me-restart service sesuai kondisinya.

Jika service sedang gagal atau berhenti:

sudo systemctl start php8.3-fpm

Jika service sudah berjalan dan kamu perlu menerapkan perubahan konfigurasi:

sudo systemctl reload php8.3-fpm

Dukungan reload bergantung pada service dan paket yang digunakan. Jika reload tidak didukung atau tidak sesuai dengan kebutuhan perubahan, ikuti prosedur restart yang berlaku pada instalasi tersebut.

Restart dapat mengganggu pemrosesan request aktif untuk sementara. Pada server produksi, lakukan perubahan pada waktu yang sesuai dan pastikan tersedia akses pemulihan jika service gagal kembali.

Verifikasi hasil perbaikan

Setelah menjalankan tindakan yang diperlukan, lakukan pemeriksaan berikut.

1. Pastikan status PHP-FPM aktif

sudo systemctl status php8.3-fpm --no-pager -l

Hasil yang diharapkan adalah status active (running). Namun, status aktif belum membuktikan bahwa seluruh pool dan koneksi web server bekerja dengan benar.

2. Periksa log terbaru

sudo journalctl -u php8.3-fpm -n 50 --no-pager

Pastikan tidak ada error startup baru. Jika pesan lama masih terlihat, perhatikan timestamp-nya agar tidak salah menganggap error sebelum perbaikan sebagai error terbaru.

3. Uji website melalui HTTP

Dari terminal, jalankan:

curl -sS -o /dev/null -w "%{http_code}\n" \https://domainkamu.com/

Ganti domain contoh dengan website yang ingin diperiksa.

Kode 200 umumnya menunjukkan permintaan berhasil, sedangkan 502 dapat menunjukkan masalah komunikasi antara web server dan upstream. Kode 500 dapat berasal dari aplikasi PHP atau komponen lain.

Hasil HTTP saja tidak selalu cukup. Uji halaman dinamis yang relevan, periksa log web server, dan pastikan aplikasi berfungsi sebagaimana mestinya.

Jika PHP-FPM sudah aktif tetapi website masih menghasilkan 502, lanjutkan dengan memeriksa kecocokan endpoint FastCGI pada Nginx atau Apache.

Pencegahan agar PHP-FPM tidak gagal start kembali

Untuk mengurangi risiko masalah serupa, terapkan beberapa kebiasaan berikut:

  • Backup konfigurasi sebelum mengedit. Simpan salinan file pool dan konfigurasi utama sebelum melakukan perubahan.

  • Uji konfigurasi terlebih dahulu. Gunakan opsi pengujian dari binary PHP-FPM yang sesuai sebelum menerapkan perubahan.

  • Hindari mencampur versi PHP. Pastikan file konfigurasi, binary, dan service berasal dari versi yang sesuai.

  • Dokumentasikan endpoint pool. Catat socket atau port yang digunakan setiap pool dan web server yang mengaksesnya.

  • Pantau resource server. Perhatikan penggunaan memori, disk, jumlah worker, dan log ketika trafik meningkat.

  • Lakukan pembaruan secara terencana. Setelah memperbarui PHP atau panel hosting, verifikasi service serta konfigurasi pool yang terdampak.

  • Gunakan konfigurasi per website secara konsisten. Pada server multi-website, hindari perubahan global tanpa memahami dampaknya terhadap pool lain.

FAQ seputar PHP-FPM pool failed to start

1. Apa penyebab paling umum PHP-FPM pool failed to start?

Penyebabnya bisa berupa kesalahan konfigurasi, user atau group tidak tersedia, konflik socket, atau kegagalan membuat listener. Log PHP-FPM dan hasil pengujian konfigurasi diperlukan untuk menentukan penyebab yang sebenarnya.

2. Bagaimana cara memeriksa error konfigurasi PHP-FPM?

Gunakan binary PHP-FPM yang sesuai dengan versi instalasi dan jalankan opsi -t. Contohnya, sudo /usr/sbin/php-fpm8.3 -t. Perintah ini memeriksa konfigurasi tanpa perlu memulai ulang service.

3. Apakah PHP-FPM pool yang gagal start selalu menyebabkan error 502?

Tidak selalu. Jika website bergantung pada pool tersebut, Nginx atau Apache dapat menghasilkan 502 karena upstream tidak tersedia. Namun, kode 502 juga dapat disebabkan oleh masalah koneksi lain, sehingga log kedua layanan tetap perlu diperiksa.

4. Mengapa PHP-FPM aktif tetapi website tetap tidak bisa diakses?

Web server mungkin menggunakan socket yang berbeda dari konfigurasi PHP-FPM, tidak memiliki izin mengakses socket, atau mengalami masalah lain saat meneruskan request. Periksa konfigurasi fastcgi_pass, endpoint listen, dan error log web server.

5. Apakah aman me-restart PHP-FPM berulang kali sampai berhasil?

Tidak disarankan. Restart berulang kali tidak memperbaiki kesalahan konfigurasi atau konflik socket yang mendasarinya dan dapat mengganggu request aktif. Identifikasi penyebab dari log, perbaiki, validasi konfigurasi, lalu jalankan service kembali.

Penutup

Saat menghadapi PHP-FPM pool failed to start, mulailah dari status service dan log, kemudian validasi konfigurasi menggunakan binary yang benar. Setelah itu, periksa akun sistem, alamat listener, socket, serta resource server sesuai pesan error yang ditemukan.

Jika service sudah aktif tetapi website masih mengalami 502, arahkan pemeriksaan ke koneksi antara web server dan PHP-FPM. Dengan memisahkan kedua kondisi tersebut, kamu dapat mempersempit diagnosis tanpa mengubah konfigurasi yang sebenarnya tidak bermasalah.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *