【发布时间】: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