屏幕输出到PHP

时间:2012-06-20 08:53:55

标签: php unix ubuntu shell-exec

我有一个PHP文件,其中shell命令在屏幕上运行,命令运行正常,但我想知道是否有办法让它输出到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

有什么建议吗?

- 编辑 -

某些命令没有直接输出,这是我使用屏幕的原因之一

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 |
+---------------+--------------------------+

1 个答案:

答案 0 :(得分:1)

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

  

passthru()函数类似于exec()函数   执行命令。应该使用此函数代替exec()或   system()当Unix命令的输出是二进制数据时   需要直接传递回浏览器。这是一个常见的用途   是执行类似可以输出的pbmplus实用程序   图像流直接。通过将Content-type设置为image / gif和   然后调用pbmplus程序输出一个gif,你可以创建PHP   直接输出图像的脚本。

虽然显然可能有点不稳定。