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.
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.