3

画面を介して実行されるシェルコマンドを含むPHPファイルがありますが、コマンドは正常に実行されますが、別のファイルに書き込んでPHPの最後で読み取ることなく、これをPHPに出力する方法があるかどうか疑問に思っていました.

PHP - trace() はただの凝った print_r()

$cmd = 'ls -h /';
trace(shell_exec('screen -S output -p 0 -X stuff "`echo '.$cmd.'\'\r\n\'`"'));

ウェブ出力

NULL

画面出力

www-data@:/home/ubuntu$ ls -h /
bin   build  etc   initrd.img      lib         media  opt   root  selinux  sys  usr  vmlinuz
boot  dev    home  initrd.img.old  lost+found  mnt    proc  sbin  srv      tmp  var  vmlinuz.old

助言がありますか?

- 編集 -

screen を使用している理由の 1 つは、特定のコマンドが直接出力されないことです。

PHP

$cmd = 's3ls';
trace(shell_exec('screen -S output -p 0 -X stuff "`echo '.$cmd.'\'\r\n\'`"'));
trace(shell_exec($cmd));

ウェブ出力

trace:NULL
trace:NULL

画面

www-data@:/home/ubuntu$ s3ls
+---------------+--------------------------+
|     Name      |       CreationDate       |
+---------------+--------------------------+
| bucket        | 2012-05-31T13:08:51.000Z |
| bucket        | 2012-01-17T16:51:58.000Z |
| bucket        | 2012-03-31T11:19:54.000Z |
+---------------+--------------------------+
4

1 に答える 1

1

void passthru(string $ command [、int&$ return_var])

passthru()関数は、コマンドを実行するという点でexec()関数に似ています。Unixコマンドからの出力がバイナリデータであり、ブラウザに直接返す必要がある場合は、exec()またはsystem()の代わりにこの関数を使用する必要があります。これの一般的な使用法は、画像ストリームを直接出力できるpbmplusユーティリティのようなものを実行することです。Content-typeをimage/gifに設定し、pbmplusプログラムを呼び出してgifを出力することにより、画像を直接出力するPHPスクリプトを作成できます。

どうやらそれは少し不安定かもしれませんが。

于 2012-06-21T05:53:04.560 に答える