Rumah > Artikel > pembangunan bahagian belakang > Apa yang perlu dilakukan jika php exec tidak dapat dilaksanakan
Penyelesaian kepada masalah yang php exec tidak boleh dilaksanakan: 1. Cari fail konfigurasi php php.ini, cari "disable_functions" dalam fail dan alih keluar "exec" dan "shell_exec"; ke pelayan untuk mengubah suai kebenaran fail ;3. Ubah suai mod selamat dalam konfigurasi kepada "safe_mode=On".
Persekitaran pengendalian tutorial ini: sistem Windows 7, PHP versi 8.1, komputer Dell G3.
Apakah yang perlu saya lakukan jika php exec tidak dapat dilaksanakan?
Exec PHP gagal melaksanakan analisis arahan sistem Jana imej daripada halaman html, gunakan alat phantomjs (klik untuk belajar) untuk mengambil tangkapan skrin halaman dan jalankannya dalam tetingkap cmd tanpa sebarang masalah. Tetapi operasi exec gagal dalam php, menyebabkan phantomjs bukan arahan dalaman.
Penyelesaian masalah:
Cari pelbagai penyelesaian dalam Baidu:Pilihan 1:
1. Ubah suai php.ini Cari fail konfigurasi php php.ini Jika anda menggunakan program pemasangan automatik PHP extraterrestrial untuk mengkonfigurasi persekitaran PHP, fail ini berada dalam direktori C:WINDOWS.Cari "disable_functions" dalam fail, cari, alih keluar "exec" dan "shell_exec", dan kemudian simpan fail itu.
2. Ubah suai sifat fail cmd.exe
Masukkan C: WINDOWSsystem32, cari fail cmd.exe, klik kanan -> Properties , klik "Keselamatan" "Tambahkan akaun tetamu Internet dalam tetapan, iaitu akaun IUSR_******, dan kemudian berikan kebenaran "Baca dan Jalankan" dan "Baca".
Pilihan 2:
Ada yang mengatakan ia adalah isu kebenaran. Penyelesaian:https://www.php.cn/php-weizijiaocheng-498092.html
Pilihan 3:
Dalam banyak kes, menggunakan eksekutif PHP, sistem dan fungsi lain untuk memanggil arahan sistem boleh membantu kami menyelesaikan kerja kami dengan lebih baik dan lebih pantas. Contohnya, exec banyak membantu saya semasa saya memproses fail .rar secara kelompok dua hari lalu.Hari ini saya akan menyelesaikan fungsi sistem panggilan yang biasa digunakan dan berkongsi pengalaman saya dengan semua orang.
Nota: Jika anda ingin menggunakan kedua-dua fungsi ini, mod selamat dalam php.ini mesti dimatikan, jika tidak php tidak akan membenarkan anda memanggil arahan sistem atas sebab keselamatan. Mula-mula lihat penjelasan kedua-dua fungsi ini dalam manual PHP: exec --- Jalankan program luaranPenjelasan:
exec ( ) melaksanakan arahan arahan yang diberikan, tetapi ia tidak mengeluarkan apa-apa sahaja daripada hasil arahan Jika anda perlu melaksanakan perintah dan mendapatkan semua maklumat daripada arahan, anda boleh gunakan passthru ( ) fungsi ini.
Jika tatasusunan argumen diberikan, tatasusunan yang ditentukan akan diisi dengan setiap keluaran baris oleh arahan Nota: Jika tatasusunan sudah mengandungi beberapa elemen, exec() akan menambahkannya pada tatasusunan kemudian anda tidak mahu fungsi ini menambah elemen, anda boleh memanggil unset() sebelum menghantar tatasusunan kepada exec().
语法 : string exec ( string command [, array &output [, int &return_var]] )Jika tatasusunan parameter dan return_var diberikan, perintah status yang dikembalikan akan ditulis pada pembolehubah ini. Nota: Jika anda membenarkan data daripada input pengguna dihantar ke fungsi ini, maka anda harus menggunakan escapeshellcmd() untuk memastikan pengguna tidak boleh menipu sistem untuk melaksanakan arahan sewenang-wenangnya. Nota: Jika anda menggunakan fungsi ini untuk memulakan atur cara dan ingin meninggalkannya semasa berjalan di latar belakang, anda mesti memastikan bahawa output atur cara diubah hala ke fail atau beberapa aliran data Output lain, jika tidak PHP akan digantung sehingga pelaksanaan program tamat. sistem --- Jalankan atur cara luaran dan paparkan output
Penerangan:
system() melaksanakan arahan arahan yang diberikan dan mengeluarkan hasilnya. Jika parameter return_var diberikan, kod status perintah yang dilaksanakan akan ditulis kepada pembolehubah ini.
Nota: Jika anda membenarkan data daripada input pengguna dihantar ke fungsi ini, maka anda harus menggunakan escapeshellcmd() untuk memastikan pengguna tidak boleh menipu sistem untuk melaksanakan arahan sewenang-wenangnya.
语法 : string system ( string command [, int &return_var] )Nota: Jika anda menggunakan fungsi ini untuk memulakan atur cara dan ingin meninggalkannya semasa berjalan di latar belakang, anda mesti memastikan bahawa output atur cara diubah hala ke fail atau beberapa aliran data Output lain, jika tidak PHP akan digantung sehingga pelaksanaan program tamat. Jika PHP berjalan sebagai modul pelayan, system() akan cuba mengosongkan penimbal output pelayan web secara automatik selepas mengeluarkan setiap baris. Mengembalikan baris terakhir arahan jika berjaya, palsu jika gagal. Jika anda perlu melaksanakan arahan dan mendapatkan semua data daripada arahan itu, anda boleh menggunakan fungsi passthru().
这二个都是用来调用系统shell命令,
不同点:
exec可以把执行的结果全部返回到$output函数里(数组),$status是执行的状态 0为成功 1为失败
systerm不需要提供$output函数,他是直接把结果返回出来,同样$return_var是执行的状态码 0为成功 1为失败
exec示例:
以下为引用的内容:
<?php $a = exec("dir",$out,$status); print_r($a); print_r($out); print_r($status); ?>
system示例:
以下为引用的内容:
<?php $a = system("dir",$out); print_r($a); print_r($out); ?>
总结:
以上三个解决方案都是从百度搜索到的。
第一个解决方案我查看了配置,不存在这种情况,pass。
第二个解决方案由于需要改服务器权限,情况不允许,没试。
第三个解决方案参考了一下,修改了配置中的安全模式,safe_mode=On;然后问题迎刃而解。
OK,以上是我解决问题的过程。希望可以帮到广大像我一样的小白。
推荐学习:《PHP视频教程》
Atas ialah kandungan terperinci Apa yang perlu dilakukan jika php exec tidak dapat dilaksanakan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!