我有一个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 |
+---------------+--------------------------+
void passthru ( string $command [, int &$return_var ] )
passthru() 函数类似于 exec() 函数,因为它 执行命令。此函数应用于代替 exec() 或 system() 当 Unix 命令的输出是二进制数据时 需要直接传递回浏览器。此的常见用途 是执行类似 PBMplus 实用程序的东西,它可以输出 直接流式传输图像。通过将内容类型设置为图像/gif 和 然后调用 PBMPLUS 程序输出 gif,就可以创建 PHP 直接输出图像的脚本。
虽然显然它可能有点片状。