【问题标题】:Screen output to PHP屏幕输出到 PHP
【发布时间】:2012-06-20 08:53:55
【问题描述】:

我有一个 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 |
+---------------+--------------------------+

【问题讨论】:

  • $output = shell_exec('ls -h /'); 有什么问题?
  • 为什么不用 shell_exec 或 exec 直接执行你的命令?
  • 作为监控过程的一部分,我需要通过一个 shell,我想要运行的实际命令在通过时也没有显示任何输出,我现在将编辑我的帖子以显示。
  • 不要使用trace(),而是使用var_dump()

标签: php unix ubuntu shell-exec


【解决方案1】:

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

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

虽然显然它可能有点片状。

【讨论】:

  • 谢谢,在此之前我从未听说过这个功能:D
猜你喜欢
  • 2011-03-27
  • 2011-09-27
  • 1970-01-01
  • 2011-09-02
  • 1970-01-01
  • 2013-05-20
  • 2013-01-24
  • 2012-03-23
  • 1970-01-01
相关资源
最近更新 更多