当前位置: 首页 > 知识库问答 >
问题:

使用PHP exec执行命令

花欣然
2023-03-14

我正在处理我的一个项目。我正在windows机器上使用XAMPP开发该项目。这就是我面临的问题。我需要在服务器上执行shell脚本,并在网页上显示结果。问题是,大多数脚本都按预期运行,但我无法获得以下命令的输出:,

ls, cat, pwd

因为这些命令返回给我一个空白数组。

我找不到确切的问题。

共有2个答案

常睿范
2023-03-14

请使用< code>passthru()而不是< code>exec()。

子车英达
2023-03-14

这不是对你的问题的直接回答,但是我觉得有必要指出,可以在PHP中模拟< code>ls 、< code>cat和< code>pwd的功能,所以如果你所做的只是调用这些命令并将结果传回PHP,那么调用它们可能根本没有任何意义。

< code>ls是一个目录列表。PHP提供了一个名为< code>DirectoryIterator的类,只需几行代码就可以完成这项工作:

一个例子:

$iterator = new DirectoryIterator($directory);
foreach ($iterator as $fileinfo) {
    if ($fileinfo->isFile()) {
        print "File: ".$fileinfo->getFilename();
    }
}

< code>pwd获取当前目录。PHP有一个内置函数< code>getcwd(),它只用一行代码就完成了这项工作。

< code>cat将文件(和管道)打印到输出缓冲区。这可能也可以在PHP内部完成。< code>cat有时用于一些相当复杂的命令行内容,您可能希望将它们保存在shell中。但是对于简单的东西(甚至是中等复杂的东西),PHP完全能够胜任。

更多地了解您正在尝试实现的目标会有所帮助,但我相信PHP能够做到听起来像您正在做的事情,而无需使用shell。

希望有帮助。

 类似资料:
  • 为什么/我的目标: 我有一个由pi组成的小型网状网络,每天大部分时间都在运行脚本。我想取消停机时间,但是代码有时会在连续循环3-4天后停止工作,(有时长达一周,代码才会出现错误并停止)。 每个节点上运行的脚本用“最后签入”字段更新mySQL数据库。 我希望用Java编写一个小型后台程序,它将在我的服务器上无限期运行,时不时地检查每个站点的“最后签入”,如果它注意到一个节点宕机,远程ssh进入该节点

  • 问题内容: 我有一个需要使用redis命令行界面执行的redis命令的长文本文件: 例如 等等 我似乎找不到一种比一次输入命令更快的方法。有数十万行,所以我不想只将它们全部堆叠到一个DEL命令中,它们也不需要一次全部运行。 问题答案: 以下代码对我在Mac上的Redis 2.4.7有用 满足您的要求吗?或者,您是否正在寻找是否有办法以编程方式更快地做到这一点?

  • 问题内容: 我想知道是否有一种方法可以在Go中运行一定的时间,然后在从通道接收到值后将其杀死。在似乎不支持命令管道。谢谢。 问题答案: 这是我的管道示例,通过OS Std Pipe归档一个调用文件b,您可以对其进行编辑并添加计时器以执行所需的操作。 文件b:

  • 问题内容: 我正在编写一个脚本来自动化Python中的某些命令行命令。目前,我正在打电话: 但是我需要在远程计算机上运行一些命令。手动地,我将使用ssh登录,然后运行命令。我将如何在Python中自动执行此操作?我需要使用(已知)密码登录到远程计算机,所以我不能只使用,我想知道是否应该使用一个模块? 问题答案:

  • I使用Processbuilder如下所示: 在方法中,我设置要执行的linux命令,如下所示: 我可以从终端执行相同的命令。

  • 我试图使用Java的类来执行包含管道的命令。例如: 然而,我得到了一个错误: 然后: 尽管该命令在命令行中运行得很好,但我无法让执行将其输出重定向到另一个的命令。 有没有办法做到这一点?