Rumah > pembangunan bahagian belakang > masalah PHP > Apakah yang perlu saya lakukan jika system() dalam php tidak mengembalikan output?

Apakah yang perlu saya lakukan jika system() dalam php tidak mengembalikan output?

王林
Lepaskan: 2023-03-13 06:40:02
asal
2512 orang telah melayarinya

Penyelesaian kepada masalah yang system() dalam php tidak mengembalikan output: halakan semula ralat standard ke output standard dengan menambahkan [2 >& 1] pada arahan, contohnya [exec('some_command -- pilihan 2>& 1', $output, $ret);].

Apakah yang perlu saya lakukan jika system() dalam php tidak mengembalikan output?

Persekitaran pengendalian artikel ini: sistem Windows 10, PHP 7, komputer thinkpad t480.

Baru-baru ini, semasa saya bekerja, saya secara tidak sengaja mendapati bahawa melaksanakan arahan biasa seperti 'ls', exec() boleh berfungsi dengan baik, contohnya:

 exec('ls',$输出,$ retval); 
 var_dump($ output,$ retval); 
 // $ output包含文件名数组,retval === 0
Salin selepas log masuk

Tetapi apabila saya cuba melaksanakan program lain, Tetapi saya tidak boleh mendapatkan output, seperti berikut:

exec('some_command --a_parameter',$ output ,$ retval); 
 var_dump($ output,$ retval); 
 // $ output包含一个空数组,结束$ retval === 0
Salin selepas log masuk

Apabila melaksanakan arahan terus dari baris arahan, beberapa baris akan dicetak Saya tahu bahawa pelaksanaan arahan telah berjaya dan saya boleh melihat hasilnya (beberapa kemas kini fail, penambahan data, dll.), tetapi saya tidak dapat melihat outputnya.

Fungsi exec() hanya akan menangkap output standard. Saya tidak pasti bahawa ralat standard sentiasa dihantar ke log ralat apache, tetapi nampaknya mungkin.

Jika anda tidak perlu menggunakan sistem Unix, kami sebenarnya boleh mengubah hala ralat standard kepada output standard dengan menambahkan 2>& 1 pada arahan, supaya masalah itu dapat diselesaikan, contohnya:

 exec('some_command --option 2>& 1',$ output,$ ret);
Salin selepas log masuk

Pembelajaran yang disyorkan: latihan php

Atas ialah kandungan terperinci Apakah yang perlu saya lakukan jika system() dalam php tidak mengembalikan output?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan