PHP: Membuat compiler online menggunakan shell_exec

Pendahuluan

PHP memiliki fungsi shell_exec untuk mengeksekusi perintah shell linux menggunakan PHP. Berikut contoh penggunaan fungsi shell_exec untuk meng-compile script bahasa C menggunakan PHP di mesin Linux Ubuntu 12.04. Tulisan ini kontradiktif dengan sistem keamanan di Linux. Jadi jangan diprotes kalo prosedur di bawah ini dipandang tidak aman. :)

Prerequisities

1. Daftarkan www-data pada /etc/sudoers
# nano /etc/sudoers
www-data ALL=NOPASSWD: ALL

maksudnya: www-data (user dari www) dapat menjalankan sudo tanpa password.

2. Matikan magic quota di php.ini
# nano /etc/php5/apache2/php.ini
magic_quotes_gpc = Off

maksudnya supaya karakter yang dimasukkan dalam form, tidak ditambahkan karakter macam-macam oleh PHP.

3. Restart apache-nya
# /etc/init.d/apache2 restart

Implementasi:

Halaman input.php
<form action=compile.php method=get>
nama file <input type=text name=nama_file><br>
script anda <br>
<textarea name=isi_script rows="4" cols="50"></textarea><br>
<input type=submit value=kirim>
<form>

Halaman compile.php
<?
$nama_file=$_GET['nama_file'];
$isi_script=$_GET['isi_script'];
echo "nama file = $nama_file<br>";
echo "isi_script = $isi_script<br>";

//output file
$output_file = str_replace('cpp','exe', $nama_file);
$buat_file = 'sudo touch '.$nama_file;
echo "$buat_file<br>";

//proses buat file
shell_exec($buat_file);

//proses permisi root
$permisi = "sudo chmod 777 ".$nama_file;
shell_exec($permisi);

//proses memasukkan content ke file
file_put_contents($nama_file,$isi_script);

//membuat file exe (proses compile)
$buat_exe = "sudo i586-mingw32msvc-gcc $nama_file -o $output_file";
echo "$buat_exe<br>";
$result = shell_exec("$buat_exe 2>&1");
echo "hasil = $result<br>";
?>

Selamat mencoba.
Next Post Previous Post
No Comment
Add Comment
comment url