Definisi dan Fungsi passthru()
passthru() adalah fungsi bawaan PHP yang digunakan untuk mengeksekusi perintah eksternal pada sistem operasi server dan mengirimkan output mentah (raw output) secara langsung ke browser atau output buffer. Berbeda dengan exec() yang menyimpan output ke dalam array, passthru() sangat efisien untuk menjalankan perintah yang menghasilkan data biner atau teks panjang yang perlu ditampilkan segera, seperti gambar atau stream data.
Sintaks Dasar
void passthru ( string $command [, int &$return_var ] )- $command: Perintah sistem yang ingin dijalankan.
- $return_var: (Opsional) Variabel untuk menyimpan status kode keluar (exit status) dari perintah tersebut.
Tabel Perbandingan Fungsi Eksekusi Sistem
| Fungsi | Output | Return Value | Kegunaan Utama |
|---|---|---|---|
| passthru() | Langsung ke browser | Status kode | Output biner/stream |
| exec() | Array (baris terakhir) | Baris terakhir | Manipulasi data teks |
| system() | Langsung ke browser | Status kode | Eksekusi perintah umum |
| shell_exec() | String lengkap | Output lengkap | Menangkap output ke variabel |
Implementasi Teknis
Berikut adalah contoh penggunaan passthru() untuk menjalankan perintah sistem ls -la pada lingkungan Linux/Unix:
<?php
// Menjalankan perintah ls -la
$command = 'ls -la';
$return_var = 0;
echo "<pre>";
passthru($command, $return_var);
echo "</pre>";
if ($return_var === 0) {
echo "Perintah berhasil dijalankan.";
} else {
echo "Perintah gagal dengan kode: " . $return_var;
}
?>Poin Penting Keamanan
Penggunaan passthru() memiliki risiko keamanan tinggi jika input dari pengguna tidak disanitasi. Penyerang dapat melakukan Command Injection. Selalu gunakan escapeshellarg() untuk membungkus argumen perintah guna mencegah eksekusi perintah berbahaya.
Troubleshooting Lapangan
- Permission Denied: Pastikan user web server (seperti
www-data) memiliki hak akses untuk menjalankan perintah tersebut. - Safe Mode/Disabled Functions: Periksa file
php.inipada bagiandisable_functions. Pastikanpassthrutidak masuk dalam daftar fungsi yang dilarang. - Path Environment: Gunakan path absolut (misal:
/usr/bin/gitbukan hanyagit) untuk menghindari kegagalan eksekusi karena perbedaan variabel lingkungan PATH.