【问题标题】:Executing commands with PHP exec使用 PHP exec 执行命令
【发布时间】:2012-08-18 09:28:33
【问题描述】:

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

ls,猫,密码

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

我无法找到确切的问题。

【问题讨论】:

  • 你知道不同的操作系统有不同的shell命令,对吧?只是说,你没有指定你的服务器运行什么,但也许是你的 windows/unix 混合导致了问题。
  • 我正在基于 Windows 的 PC 上进行开发,但最终需要在 *nix 环境中实现。

标签: php shell exec


【解决方案1】:

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

ls 是一个目录列表。 PHP 提供了一个名为 DirectoryIterator 的类,只需几行代码就可以做到这一点:

一个例子:

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

pwd 获取当前目录。 PHP 有一个内置函数getcwd(),只需一行代码即可完成此操作。

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

了解更多关于您想要实现的目标会有所帮助,但我相信 PHP 能够完成听起来像您正在做的事情,而无需使用 shell。

希望对您有所帮助。

【讨论】:

  • 好的,我会尝试考虑这一点,但为此我必须重写我的 shell 脚本。我只需要一种远程执行该 shell 脚本并以图形格式显示内容的方法。
【解决方案2】:

使用passthru() 而不是exec()

【讨论】:

    猜你喜欢
    • 2013-09-07
    • 1970-01-01
    • 2017-05-06
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    相关资源
    最近更新 更多