Sejauh ini kita selalu menjalankan program dengan pola php berkas.php dari folder yang sama. CLI PHP sebenarnya menawarkan lebih dari itu: menjalankan berkas dari lokasi mana pun, mengeksekusi kode sekali pakai tanpa berkas, membuat script yang dieksekusi langsung seperti program biasa, sampai melaporkan hasil lewat exit code. Pada Chapter ini kita praktikkan semuanya di terminal — kemampuan yang sama persis dipakai oleh cron job, deployment script, dan pipeline CI/CD di dunia kerja. Semua contoh di chapter ini telah dicoba di PHP 8.4 pada terminal Linux.

Menjalankan Berkas dari Mana Saja #

Perintah php menerima path berkas — relatif maupun absolut — sehingga Anda tidak harus berada di folder yang sama dengan script:

bash
php laporan.php
php latihan-php/laporan.php
php /home/budi/latihan-php/laporan.php

Ketiga bentuk mengeksekusi berkas yang sama bila path-nya menunjuk ke berkas itu; PHP membaca berkas, mengeksekusi, lalu selesai. Yang perlu diingat: berkas PHP yang kita buat sejauh ini tidak peduli dari mana ia dijalankan — ia tidak membaca berkas lain, sehingga lokasi pemanggilan tidak berpengaruh. Saat script mulai membaca berkas data di sekitarnya, lokasi pemanggilan baru menjadi penting, materi yang kita bahas di Section File System dan Streams.

Kode Sekali Pakai dengan php -r #

Untuk pertanyaan kecil — berapa hasil 2 pangkat 10? bagaimana tampilnya string ini? — membuat berkas terasa berlebihan. Opsi -r (run) mengeksekusi potongan kode langsung dari argument command line tanpa berkas dan tanpa tag <?php:

bash
php -r 'echo 2 ** 10, PHP_EOL;'
php -r '$nama = "Budi"; echo "Halo, $nama", PHP_EOL;'
text
1024
Halo, Budi

Perhatikan bahwa kode dibungkus kutip tunggal. Pilihan ini penting: kutip tunggal meneruskan isi apa adanya ke PHP, sehingga $nama tetap dibaca sebagai variable PHP. Bila Anda memakai kutip ganda, shell mencoba menggantikan $nama lebih dulu dengan nilai variabel shell-nya (yang kosong), dan PHP menerima kode yang rusak — percobaan kita menunjukkan hasilnya Parse error: syntax error, unexpected token ",". Kode -r juga tidak memerlukan <?php karena seluruh argument dianggap sudah berada di mode PHP.

Script yang Dieksekusi Langsung #

Sistem operasi Unix mengenali baris khusus bernama shebang — baris pertama berformat #! — sebagai penunjuk program yang mengeksekusi berkas. Dengan shebang PHP dan permission eksekusi, script PHP bisa dijalankan langsung tanpa mengetik php:

php
#!/usr/bin/env php
<?php

$nama = "Budi";

echo "Halo, $nama!\n";
echo "Script ini dijalankan tanpa awalan php.\n";

Simpan script di atas sebagai salam.php, lalu siapkan dua hal di terminal:

bash
chmod +x salam.php
./salam.php
text
Halo, Budi!
Script ini dijalankan tanpa awalan php.

Baris #!/usr/bin/env php wajib berada paling atas — sebelum tag <?php — supaya sistem operasi membacanya. Setelah permission eksekusi diberikan, ./salam.php — tanda ./ berarti “berkas di folder ini” — menjalankan script melalui program yang ditunjuk shebang, dan kedua baris sapaan tercetak persis seperti saat dijalankan dengan php salam.php. Shebang memakai bentuk #!/usr/bin/env php alih-alih path mutlak seperti #!/usr/bin/php karena env mencari perintah php di PATH, sehingga script tetap jalan di komputer yang memasang PHP di lokasi berbeda. Berkas salam.php pada bagian bawah halaman siap diunduh untuk Anda coba; cukup beri permission eksekusi, lalu jalankan.

Exit Code sebagai Laporan Hasil #

Setiap program yang berakhir melaporkan satu angka ke sistem operasi: 0 berarti sukses, selain itu berarti gagal. Angka ini disebut exit code, dan shell menyimpannya di variable $?. PHP melaporkan 0 secara otomatis saat program berjalan sampai akhir; function exit() memberi Anda kendali atas angka yang dilaporkan:

php
<?php

$stokGudang = 0;

echo "Memeriksa ketersediaan barang...\n";

if ($stokGudang > 0) {
    echo "Barang tersedia: $stokGudang unit\n";
    exit(0);
}

echo "Barang habis, proses dihentikan\n";
exit(1);

Output yang Dihasilkan:

text
Memeriksa ketersediaan barang...
Barang habis, proses dihentikan

Karena $stokGudang bernilai 0, blok if tidak jalan (kondisinya tidak terpenuhi), dua baris pesan tercetak, dan exit(1) menghentikan program dengan laporan gagal. Perilaku $? terlihat jelas di terminal:

bash
php gagal.php
echo "Exit code: $?"
text
Memeriksa ketersediaan barang...
Barang habis, proses dihentikan
Exit code: 1

Exit code terasa manfaatnya ketika program dipanggil program lain. Script deployment yang menjalankan php migrasi.php bisa memeriksa gagal-tidaknya lewat exit code lalu menghentikan proses; pipeline CI/CD menandai build gagal karena satu langkah php melaporkan angka selain nol. Memberi exit code yang jujur adalah bentuk kesopanan script — pemanggil tidak perlu menebak-nebak hasil dari teks output. Sebagai catatan tambahan yang teruji: exit("pesan") mencetak pesan lalu melaporkan exit code 0, dan exit tanpa kurung sama dengan exit(0).

Ringkasan #

CLI PHP menyediakan tiga jalur eksekusi: berkas lewat php berkas.php dari path mana pun, kode sekali pakai lewat php -r, dan script langsung lewat shebang ditambah permission eksekusi. Exit code melaporkan hasil program ke pemanggilnya — 0 untuk sukses, angka lain untuk gagal — dan menjadi bahasa komunikasi antar-program di otomasi. CLI hanyalah satu wajah PHP; wajah yang lain adalah web server, yang kita nyalakan sendiri pada Chapter berikutnya.

Referensi #

Berkas Sumber

Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.

salam.php

Unduh berkas
php
#!/usr/bin/env php
<?php

// salam.php — script PHP yang dapat dieksekusi langsung dari terminal.
// Jalankan dengan : php salam.php
// Atau lebih keren  : chmod +x salam.php lalu ./salam.php

$nama = "Budi";

echo "Halo, $nama!\n";
echo "Script ini dijalankan tanpa awalan php.\n";