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?

王林
王林asal
2021-09-27 14:41:232511semak imbas

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

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

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);

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!

Kenyataan:
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