Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menjalankan Skrip Shell Tinggi daripada PHP Menggunakan `sudo`?
Melaksanakan Skrip Shell dengan Keistimewaan Ditingkatkan dalam PHP
Untuk melaksanakan skrip bash yang memerlukan keistimewaan tinggi (melalui SUDO) dari dalam PHP menggunakan shell_exec , terdapat dua pendekatan utama:
Pilihan 1: Lumpuhkan Prompt Kata Laluan
Kaedah ini melibatkan pengubahsuaian fail sudoers (/etc/sudoers) dengan menambahkan peraturan yang membenarkan pengguna pelayan web (cth., www-data) untuk menjalankan arahan yang ditentukan tanpa gesaan kata laluan. Buka fail sudoers menggunakan arahan visudo dan tambahkan baris yang serupa dengan yang berikut:
www-data ALL=NOPASSWD: /path/to/script
Ini akan membolehkan pengguna pelayan web melaksanakan skrip tanpa digesa untuk mendapatkan kata laluan.
Pilihan 2: Gunakan proc_open PHP
Pendekatan alternatif ialah menggunakan fungsi proc_open dalam PHP. Fungsi ini membolehkan anda membuka proses dan menentukan pilihan tambahan, termasuk menyediakan kata laluan SUDO sebagai parameter:
<?php $descriptorspec = array( 0 => array("pipe", "r"), // stdin 1 => array("pipe", "w"), // stdout 2 => array("pipe", "w") // stderr ); $process = proc_open( "sudo /path/to/script", $descriptorspec, $pipes ); // Write the password to stdin fwrite($pipes[0], "your_sudo_password\n"); fclose($pipes[0]); // Read stdout and stderr from pipes while (!feof($pipes[1])) { $stdout .= fgets($pipes[1]); } while (!feof($pipes[2])) { $stderr .= fgets($pipes[2]); } proc_close($process); ?>
Dalam contoh ini, kata laluan SUDO disediakan sebagai rentetan dalam pernyataan fwrite. Kedua-dua kaedah berkesan mencapai matlamat untuk melaksanakan skrip istimewa daripada PHP tanpa digesa untuk kata laluan.
Atas ialah kandungan terperinci Bagaimana untuk Menjalankan Skrip Shell Tinggi daripada PHP Menggunakan `sudo`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!