Instalasi yang mulus adalah kebahagiaan; instalasi yang bermasalah adalah kurikulum. Pesan command not found, versi PHP yang “mandek” di versi lama, atau ekstensi yang menolak aktif — semuanya memiliki pola diagnosis yang bisa dipelajari. Pada chapter penutup section ini kita akan membangun pola berpikir sistematis: alih-alih mencoba-coba secara acak, kita mengajarkan empat pertanyaan berurutan yang mempersempit letak masalah dengan cepat.
Empat Pertanyaan Diagnosis #
Hampir semua masalah lingkungan PHP dapat dilacak dengan empat pemeriksaan berurutan: apakah program php ditemukan, versi berapa yang berjalan, php.ini mana yang dibaca, dan ekstensi apa saja yang aktif. Diagram berikut merangkum alurnya:
Diagram di atas dibaca dari atas ke bawah: setiap pemeriksaan yang gagal membawa kita ke langkah perbaikan, lalu kembali memverifikasi sebelum lanjut ke pemeriksaan berikutnya. Bagian-bagian berikut membedah titik-titik gagal yang paling sering terjadi beserta solusinya.
Masalah 1: “command not found” #
Gejalanya khas: Anda baru selesai instalasi, menjalankan php -v, dan shell menjawab:
bash: phpx: command not found(Pesan di atas dihasilkan dari perintah phpx yang memang tidak ada; untuk php, teksnya sama persis.) Exit code-nya 127 — kode standar shell untuk “program tidak ditemukan”. Artinya bukan PHP-nya rusak, melainkan shell tidak tahu harus mencari di mana. Shell mencari program hanya di daftar direktori bernama PATH, sehingga diagnosanya ada dua langkah. Pertama, pastikan PHP benar-benar terpasang — dengan package manager, jalankan ulang perintah instalasi dan baca keluarannya sampai selesai. Kedua, periksa apakah lokasi php masuk PATH:
type phpOutput yang Dihasilkan:
php is /home/z/my-project/bin/phpPerintah type menunjukkan berkas mana yang akan dijalankan shell bila Anda mengetik php — keluaran di atas berasal dari komputer tempat materi ini ditulis, dan bila php tidak ditemukan, type justru menjawab dengan pesan galat not found. Bila itu yang terjadi, solusinya tergantung jalur instalasi Anda: pastikan langkah PATH pada Chapter Instalasi PHP di Windows
diulang dengan benar (lalu buka jendela terminal baru), atau pasang ulang lewat package manager yang menempatkan php di lokasi standar seperti /usr/bin (Linux) dan /opt/homebrew/bin (macOS). Perintah echo $PATH (bash) atau $env:Path (PowerShell) menampilkan daftar direktori yang sedang diperiksa sebagai pembanding.
Masalah 2: Versi PHP yang Tidak Berganti #
Gejala kedua lebih halus: php -v berhasil, tetapi menampilkan versi lama padahal Anda sudah memasang yang baru. Penyebabnya hampir selalu ada dua program php di komputer dan PATH menemukan yang salah lebih dulu — ingat, shell memakai kecocokan pertama, bukan terbaru. Periksa dengan:
which -a phpOutput yang Dihasilkan:
/home/z/my-project/bin/phpFlag -a meminta semua kecocokan, bukan hanya yang pertama; komputer tempat materi ini ditulis memang hanya memiliki satu PHP. Di komputer dengan beberapa versi, keluarannya berisi beberapa baris, dan baris teratas itulah yang menang. Di Ubuntu, urutan versi php dikelola perintah sudo update-alternatives --config php yang menampilkan daftar versi terpasang dan meminta Anda memilih; alternatif tercepat adalah memanggil biner versi tertentu secara eksplisit, misalnya php8.4 skrip.php. Di macOS dengan Homebrew, jalankan brew link --overwrite php bila ada formula [email protected] lama yang menahan tautan. Di Windows, periksa urutan entri di variabel Path lewat Environment Variables dan pastikan direktori PHP baru berada lebih atas daripada yang lama.
Masalah 3: php.ini yang Salah atau Tidak Terbaca #
Gejala: Anda mengubah memory_limit di php.ini, tetapi php -i atau ini_get() tetap melaporkan nilai lama. Jalankan php --ini dan perhatikan baris Loaded Configuration File:
php --iniOutput yang Dihasilkan:
Configuration File (php.ini) Path: /usr/local/etc/php
Loaded Configuration File: (none)
Scan for additional .ini files in: /usr/local/etc/php/conf.d
Additional .ini files parsed: (none)Nilai (none) pada baris kedua berarti tidak ada php.ini yang dimuat — PHP berjalan sepenuhnya dengan nilai bawaan, sehingga berkas yang Anda edit di lokasi lain tidak berpengaruh apa pun. Solusinya: temukan lokasi yang benar pada tabel Chapter php.ini
, lalu pastikan berkasnya ada di sana (di Windows, ini berarti benar-benar menyalin php.ini-development menjadi php.ini, bukan sekadar me-rename salinan di folder Downloads). Untuk pengujian cepat tanpa memindah berkas, flag -c dan variabel PHPRC yang kita coba pada Chapter php.ini dapat mengarahkan PHP ke php.ini mana pun. Dan ingat kembali pemisahan SAPI: aplikasi web membaca php.ini versi PHP-FPM yang berbeda, serta perlu sudo systemctl restart php8.4-fpm di Ubuntu agar perubahan diterapkan.
Masalah 4: Ekstensi Gagal Dimuat #
Gejala: fungsi seperti curl_init() tidak dikenal, atau PHP justru mencetak peringatan saat dinyalakan:
Warning: PHP Startup: Unable to load dynamic library 'intl' (tried: /lib/php/extensions/no-debug-non-zts-20240924/intl (Dynamic loading not supported), /lib/php/extensions/no-debug-non-zts-20240924/intl.so (Dynamic loading not supported)) in Unknown on line 0Peringatan di atas diambil dari komputer penulisan materi — pada instalasi biasa teksnya serupa namun menyebut berkas .so atau .dll yang tidak ditemukan. Arti pesannya tetap sama: PHP menemukan direktif extension=intl, tetapi gagal memuat berkas extension-nya. Diagnosisnya tiga langkah. Pertama, temukan direktori yang diperiksa PHP:
php -i | grep extension_dirOutput yang Dihasilkan:
extension_dir => /lib/php/extensions/no-debug-non-zts-20240924 => /lib/php/extensions/no-debug-non-zts-20240924Kedua, pastikan paketnya terpasang dan berkasnya hadir: di Ubuntu berarti php -m yang tidak mencantumkan intl harus diikuti sudo apt install php-intl; di Windows berarti berkas php_intl.dll beserta dependensinya memang ada di direktori hasil extension_dir. Ketiga, pastikan penulisannya benar: nama pada php.ini adalah intl atau php_intl.dll di Windows, bukan nama paket php-intl. Untuk konfirmasi akhir, php --ri intl mencetak konfigurasi extension tersebut bila aktif, atau Extension 'intl' not present. bila tidak.
Kebiasaan yang Membantu #
Bila semua jalur di atas sudah ditempuh dan masalah bertahan, kumpulkan bukti sebelum bertanya ke forum atau rekan kerja: keluaran php -v, php --ini, dan php -m dari komputer bermasalah. Tiga keluaran tersebut menjawab 90% pertanyaan yang akan diajukan penolong, dan menempelkannya sejak awal memangkas proses saling menebak. Semua perintah diagnosis pada chapter ini aman dijalankan berulang kali — tidak ada yang mengubah apa pun di sistem, semuanya hanya membaca informasi.
Ringkasan #
Diagnosis masalah PHP bergerak sistematis lewat empat pertanyaan: php -v (apakah ditemukan), which -a php (versi mana yang menang), php --ini (konfigurasi mana yang dibaca), dan php -m (ekstensi apa yang aktif). command not found berarti masalah PATH, versi yang tidak berganti berarti ada binary ganda, php.ini yang tidak terbaca berarti lokasi salah atau SAPI berbeda, dan peringatan Unable to load dynamic library berarti berkas ekstensi tidak ada di extension_dir. Dengan lingkungan yang kini sehat dan terdiagnosis, kita siap masuk ke section berikutnya: menjalankan program PHP yang sesungguhnya.