Apa fungsi php exec?

Saya mencoba ini di command prompt dan itu benar-benar menjalankan program dengan parameter yang diberikan. Ini contoh perintahnya


CATATAN file exe mendapat 3 input (folder, file_name, report_file_nmae)

> ..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml

Tetapi ketika saya menjalankan perintah ini dari file php

exec('..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml');
_

tidak ada yang terjadi. Ini adalah pertama kalinya saya menggunakan fungsi exec(), jadi saya tidak mengetahui detailnya. Apa yang salah?

Saya mencoba menggunakan

  • > ..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml
    
    1 bukannya
    > ..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml
    
    2
  • > ..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml
    
    3 pada direktori
  • menambahkan
    > ..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml
    
    4 di sekitar nama folder direktori

Tidak beruntung

Tambahan

echo exec($command)  // echos < ... why?
_

atau

exec($command, $output);
print_r($output);        // Array()

Saya bahkan mengubah izin pada file tersebut menjadi kontrol penuh untuk semua pengguna. Jika saya memanggil program dari

> ..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml
_5, saya dapat melihat ikon muncul di sebelah jam sebentar

PHP menyediakan metode exec() untuk mengeksekusi atau menjalankan perintah, program, atau skrip. Metode exec() ini dapat dengan mudah menjalankan perintah eksternal di sistem operasi. Misalnya, perintah whoami dari Linux dapat dijalankan untuk pengguna saat ini, dan nama pengguna yang dikembalikan dapat digunakan dalam aplikasi PHP

Sintaks Metode exec()

Metode PHP exec() memiliki sintaks berikut

exec(string $command, array &$output, int &$result_code)
_
  • $command adalah tipe string yang merupakan representasi string perintah
  • &$output adalah variabel array tempat hasil perintah yang dieksekusi disimpan
  • &$result_code adalah int yang menyimpan kode hasil perintah sebagai bilangan bulat

Metode exec() mengembalikan nilai boolean palsu atau string di mana string adalah baris terakhir dari output

Jalankan Perintah

Kita akan mulai dengan contoh sederhana. Kami menjalankan perintah "whoami" di sistem Linux dan menyimpan hasil atau output dalam variabel bernama $output

<?php

$output = null;

$code = null;

exec("whoami",$output,$code);

print_r($output)

?>

Atau kami dapat memberikan perintah yang ingin kami jalankan sebagai variabel string seperti di bawah ini. Pada contoh berikut kita mengatur perintah ke dalam variabel bernama $command

<?php

$output = null;

$code = null;

$command = "whoami";

exec($command,$output,$code);

print_r($output)

?>

Whoami adalah perintah yang sangat sederhana yang mengembalikan satu item yang merupakan nama pengguna dari pengguna saat ini. Perintah exec() dapat menjalankan perintah berbeda yang mengembalikan hasil yang lebih kompleks. Perintah "ls" mencantumkan file dan folder direktori kerja saat ini

<?php

$output = null;

$code = null;

$command = "ls";

exec($command,$output,$code);

print_r($output);

?>
Array
 (
     [0] => a.out
     [1] => cities.txt
     [2] => config.ttxt
     [3] => data1
     [4] => data2
     [5] => data3
     [6] => data4
     [7] => data5
     ...
     [40] => text.txt
     [41] => thinclient_drives
     [42] => uniqip.txt
     [43] => userinput.py
     [44] => usomlist.txt
     [45] => Videos
     [46] => while.sh
     [47] => year
 )

Kita bisa melihat output yang memiliki total 47 item. Output menyimpan setiap item dengan nomor indeks. Outputnya berisi konten direktori kerja saat ini

Jalankan Perintah dengan Opsi dan Parameter

Metode exec() dapat digunakan untuk mengeksekusi dan menjalankan perintah dengan opsi dan parameter. Ini adalah cara yang sama di mana opsi dan parameter diatur di dalam string perintah. Dalam contoh berikut, perintah “ls” dijalankan dengan opsi “-l” dan parameter “/etc”.

<?php

$output = null;

$code = null;

$command = "ls -l /var/log";

exec($command,$output,$code);

print_r($output);

?>

Apa fungsi php exec?
Jalankan Perintah dengan Opsi dan Parameter

Jalankan Skrip Bash

Metode exec() juga dapat digunakan untuk mengeksekusi skrip perintah bash dengan mudah. Cukup berikan nama skrip jika terletak di direktori kerja saat ini atau tentukan jalur lengkap untuk mencegah kesalahan

Skrip PHP terutama digunakan untuk mengembangkan aplikasi web tetapi juga dapat digunakan untuk tujuan lain. PHP memiliki beberapa fungsi bawaan untuk menjalankan perintah terkait sistem. exec() adalah salah satunya. Ini digunakan untuk menjalankan perintah shell atau program apa pun dari skrip PHP. Bagaimana fungsi ini dapat digunakan dalam PHP ditunjukkan dalam tutorial ini

Sintaksis

string exec ( string $command [, array &$output [, int &$return_var ]] )

Fungsi ini dapat mengambil tiga argumen. Argumen pertama adalah wajib yang akan mengambil perintah sistem. Dua argumen lainnya adalah opsional. Argumen kedua digunakan untuk menyimpan output dari perintah dalam sebuah array. Argumen ketiga dari fungsi ini digunakan untuk menyimpan status pengembalian dari perintah yang dieksekusi. Fungsi ini mengembalikan baris terakhir dari output perintah yang dieksekusi

Contoh 1. Penggunaan fungsi exec() tanpa argumen opsional

Penggunaan dasar fungsi exec() telah ditunjukkan dalam tutorial ini. Buat file PHP dengan skrip berikut untuk mengetahui bagaimana fungsi exec() mengembalikan output perintah. Perintah 'pwd' telah digunakan dalam perintah exec() pertama dari skrip yang mengembalikan satu baris keluaran. Perintah ‘ls -la‘ telah digunakan dalam perintah exec() kedua yang dapat mengembalikan beberapa baris keluaran. Jika ada perintah yang mengembalikan banyak baris maka output akan menampilkan baris terakhir sebagai output



// Menyimpan output dari perintah yang dieksekusi

$output1 =   exec('pwd');

// Cetak nilai pengembalian

gema $output1;

gema """""""""""""""""""""""""""""""""""""""""""""";

// Menyimpan baris terakhir dari perintah yang dieksekusi

$output2 = exec('ls -la);

// Cetak nilai pengembalian

gema $output2;

?>

Keluaran

Output berikut akan muncul setelah menjalankan skrip di atas dari server. Perintah 'pwd' mengembalikan direktori kerja saat ini sebagai keluaran yang ditampilkan pada keluaran pertama. Perintah 'ls -la' mengembalikan informasi detail dari daftar direktori dan keluaran kedua menunjukkan baris terakhir dari keluaran perintah

Apa fungsi php exec?

Contoh-2. Cetak semua nilai dari perintah yang dieksekusi

Pada contoh sebelumnya, tidak ada argumen opsional yang digunakan dalam fungsi exec(). Contoh berikut menunjukkan penggunaan argumen opsional dari fungsi exec(). Buat file PHP dengan skrip berikut. Dua argumen opsional exec() digunakan dalam skrip ini. Perintah 'ls -l' digunakan dalam argumen pertama yang mengembalikan daftar direktori. Variabel $output digunakan di sini untuk menyimpan output dari perintah dalam sebuah array. Variabel $status digunakan untuk menyimpan nilai status pengembalian dari perintah yang dieksekusi. Keluaran dari perintah akan dicetak sebagai larik dan setiap nilai larik keluaran akan dicetak dengan menggunakan loop 'untuk'



// Menyimpan output dari perintah yang dieksekusi dalam sebuah array

exec('ls -l', $, $status);


// Cetak semua nilai pengembalian dari perintah yang dieksekusi sebagai larik

print_r($keluaran);

gema """""""""""""""""""""""""""""""""""""""""""""""""""";

// Cetak output dari perintah yang dieksekusi di setiap baris

foreach($output as $value)

{


        gema $nilai. """""""""""""""""""""""""""""""""""""""""""""""""""";

}

// Cetak status pengembalian dari perintah yang dieksekusi

gema $status;

?>

Keluaran

Output berikut akan muncul setelah menjalankan skrip di atas dari server. Output menunjukkan array yang berisi output dari perintah, 'ls -l' dan setiap nilai array di setiap baris

Apa fungsi php exec?

Contoh-3. Cetak semua file PHP dari direktori saat ini

The following example shows the list of all PHP files of the current directory by using the exec() function. Here, the ‘ls -l *.php‘ command is used here to find out the list of all PHP files of the current directory.

 tag is used in the script to print the content of the array with the structured format.



// Menyimpan output dari perintah yang dieksekusi dalam sebuah array

exec('ls -l *. php', $keluaran);

// Cetak output dari perintah yang dieksekusi

gema ";

print_r($keluaran);

gema "";

?>

Keluaran

Output berikut akan muncul setelah menjalankan skrip di atas dari server

Apa fungsi php exec?

Contoh-4. Jalankan skrip bash

Bagaimana skrip bash dapat dieksekusi dengan menggunakan fungsi exec() telah ditunjukkan dalam contoh ini. Buat file bash bernama loop. sh dengan skrip berikut yang akan mencetak semua angka genap dari 1 hingga 20

lingkaran. SH

#. /bin/bash

#Inisialisasi penghitung

penghitung =1

#Iterasi loop hingga nilai $counter kurang dari atau sama dengan 20

sementara [ $penghitung - le 20 ]

melakukan

#Cetak angka genap

jika [[ $penghitung%2 -eq 0 ]]

kemudian

#Print $counter tanpa baris baru

echo   " $counter "

fi

#Meningkatkan $penghitung sebesar 1

(( penghitung ++))

selesai

Buat file PHP dengan skrip berikut untuk menjalankan skrip bash. 'putaran pesta. sh‘ digunakan sebagai argumen pertama dari fungsi exec() yang akan mengeksekusi loop. file skrip sh. 'foreach' loop digunakan untuk mencetak setiap nilai dari $output dengan spasi



// Jalankan skrip bash

exec('bash loop. sh', $output);


echo "Semua bilangan genap dalam 1-20 adalah. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""";


// Cetak output menggunakan loop

foreach($output as $value)

{


        gema $nilai. "  ";

}

?>

Keluaran

Output berikut akan muncul setelah menjalankan skrip di atas dari server. Output menunjukkan semua angka genap dalam 1 hingga 20

Apa fungsi php exec?

Contoh-5. Jalankan perintah `dir` menggunakan fungsi exec()

Perintah 'dir' berfungsi seperti perintah 'ls'. Contoh berikut menunjukkan bagaimana perintah 'dir' dapat dijalankan menggunakan skrip PHP. Buat file PHP dengan skrip berikut yang menyimpan output dari perintah 'dir' dalam array bernama $output dan nilai status dalam variabel bernama $return. Fungsi var_dump() digunakan di sini untuk mencetak struktur array $output dengan informasi tipe data



    //Jalankan perintah `dir`

    exec("dir", $output, $return);

    //Cetak nilai status pengembalian

    echo "Nilai kembalian dari perintah `dir` adalah $return\n";

    gema ";

    //Cetak keluaran perintah

    var_dump($output);

    gema "";

?>

Keluaran

Output berikut akan muncul setelah menjalankan skrip di atas dari server

Apa fungsi php exec?

Kesimpulan

Berbagai penggunaan fungsi exec() telah dijelaskan dalam tutorial ini untuk membantu pembuat kode PHP mengetahui cara menjalankan perintah shell dengan menggunakan skrip PHP. Beberapa fungsi lain juga ada di PHP untuk melakukan jenis tugas yang sama

Untuk apa exec digunakan?

Perintah exec adalah alat yang ampuh untuk memanipulasi file-descriptors (FD), membuat log keluaran dan kesalahan dalam skrip dengan perubahan minimal . Di Linux, secara default, deskriptor file 0 adalah stdin (input standar), 1 adalah stdout (output standar), dan 2 adalah stderr (kesalahan standar).

Apakah aman menggunakan exec di PHP?

Fungsi exec seaman yang Anda buat . Selama Anda menggunakan fungsi pelolosan yang tepat seperti yang ditunjukkan di sini, Anda akan baik-baik saja. Meskipun memungkinkan untuk membuat perintah skrip aman, vektor serangan yang umum adalah mengunggah skrip berbahaya dan menggunakan exec dan fungsi serupa untuk meretas server.

Bagaimana cara menjalankan perintah exec di PHP?

Lihat Juga ¶ .
system() - Jalankan program eksternal dan tampilkan hasilnya
passthru() - Jalankan program eksternal dan tampilkan keluaran mentah
escapeshellcmd() - Melarikan diri karakter meta shell
pcntl_exec() - Menjalankan program yang ditentukan di ruang proses saat ini
operator backtick

Bagaimana cara memeriksa apakah exec diaktifkan di PHP?

php phpinfo(); . Untuk mengaktifkannya cukup hapus exec dari baris dan kemudian Anda perlu me-restart Apache dan Anda akan baik-baik saja. Jika exec tidak terdaftar di baris disable_functions, artinya diaktifkan .