【问题标题】:Enable shell_exec() in wamp server在 wamp 服务器中启用 shell_exec()
【发布时间】:2019-05-09 04:41:21
【问题描述】:

最近我在 wamp 服务器上通过了一个问题。我需要使用 PHP 中的 shell_exec() 函数来运行一些外部 shell 脚本(一些校验和文件)。但在我的 wamp 服务器中,默认情况下禁用该功能。我在谷歌搜索,但我找不到解决方案。所以我尝试将该代码放在实时服务器中。但也有同样的问题。我联系了该服务器的技术人员,但他说我们无法启用 shell_script。这是安全暴力。

所以唯一的办法就是在 wamp 服务器中尝试...如何启用shell_exec()exec() ..?

【问题讨论】:

  • 是否启用了安全模式? shell_exec 在安全模式下被禁用
  • 即使你设法让它在你的 WAMP 服务器上运行,之后你打算如何将它移动到你的实时服务器上?您如何确定 WAMP 服务器上禁用了该功能?你尝试了什么?当你尝试它时发生了什么?
  • @Mob 我现在才注意到你实际上是在劫持别人的问题,所以我关于实时服务器的问题可能不相关。
  • 实际上,对我来说,没有移动到任何实时服务器。我只想让它在我的 Windows 盒子上运行。
  • shell_exec 甚至可以在 Windows 上使用吗?

标签: php wamp


【解决方案1】:

以下行是我读到这个问题最好的:“您需要禁用位于 \Apache2\bin 文件夹中的 php.ini 中的安全模式,而不是 php 文件夹。重新启动 Apache2 服务后立即加载新的设置。”

解决办法是:

  1. 停止 Wamp-Server 的所有服务并关闭程序

  2. 打开 .../wamp/bin/apache/Apache2../bin/php.ini

  3. 将php.ini复制到桌面并打开

  4. set safe_mode_exec_dir(= 后面的行是空的,所以它是 ON !!!)设置它!

  5. 保存

  6. 复制回目录(也许你需要管理员权限)

  7. 启动 wamp-server

  8. 享受 exec() 和合作。

【讨论】:

  • set safe_mode_exec_dir (line after = is empty, so IT IS ON!!!) set it off! ...我不明白这个...。我的php.ini有safe_mode_exec_dir = 它是空的,我需要在那里输入吗?
  • 如何关闭它?
  • safe_mode_exec_dir = off 是答案,如果在 php.ini 中不可用,只需添加一行即可!!!!
【解决方案2】:

我遇到了同样的问题,并尝试了很多解决方案。对我来说成功的是以管理员身份运行 XAMPP。

【讨论】:

    【解决方案3】:

    打开 wamp 使用的 php.ini 文件,找到 disable_functions 部分,更改它并重新启动服务器。

    【讨论】:

    • 感谢您的重播。我已经签入了 php.ini 文件。禁用功能为空。没有功能被禁用..
    • 对不起伙计们..这都是我的问题..我试过 shell_exec() 函数'ls -hal'。但它不起作用。最近我刚尝试了一些其他的基本命令,比如 'cal' , 'date' .. 它的工作原理.. 然后我意识到 wamp 只是给我们提供了 linux 环境。所以我们不能指望完整的 linux 命令利用率。实际上我尝试执行一个'c'文件。最后我找到了解决方案。首先我们需要编译那个'c'文件然后只有我们可以执行......这就是我使用的...... 谢谢大家..!!
    【解决方案4】:

    您需要在位于\Apache2\bin 文件夹中的 php.ini 中禁用安全模式,而不是在 php 文件夹中。

    加载新设置后立即重新启动 Apache2 服务。

    【讨论】:

    • 您是否查看了 Apache2 文件夹中的 php.ini? 不是 PHP 文件夹,Apache2 文件夹。
    • 检查您的 phpinfo() 以找到当前加载的 php.ini 文件
    【解决方案5】:

    不是“服务器问题”。不建议使用此配置。您必须在管理员模式下运行 WAMP 服务器。

    这里有一些信息:PHP doesn't work with shell_exec(), system() or passthru()

    【讨论】:

      【解决方案6】:

      你试过反引号吗? (如果安全模式关闭)

      `ls -hal`
      

      Windows 等效

      `dir \AH`
      

      【讨论】:

      • @WebnetMobile.com 好吧,这是不必要的。我确实提到过。所以 RTFA 给你,以及这个问题的其他 cmets。在那张纸条上,Mob 确实提到了安全模式 OFF
      【解决方案7】:

      尝试使用明显用于开发的 WAMP 服务器堆栈,例如 WPN-XMXAMPP。 对开发人员没有任何安全限制。 这样你在执行system()、shell_exec()、passthrough()的时候就不会遇到麻烦了。

      【讨论】:

        【解决方案8】:

        我认为我们可以使用这些步骤

        1. 打开 wamp\bin\apache\apache2.4.9\bin(不管 apache 版本)
        2. 在编辑器中打开 php.ini 文件
        3. 搜索“disable_functions”。
        4. 从禁用功能中移除 execshell_exec
        5. 重新启动所有服务。

        享受!!!

        【讨论】:

          【解决方案9】:
          <?php
          function _exec($cmd)
          {
              shell_exec('SCHTASKS /F /Create /TN _proc /TR "' . $cmd . '"" /SC DAILY /RU INTERACTIVE');
              shell_exec('SCHTASKS /RUN /TN "_proc"');
              shell_exec('SCHTASKS /DELETE /TN "_proc" /F');
          }
          _exec("mspaint.exe");
          ?>
          

          相当黑客,但如果您尝试使用 gui 启动任何东西,或者挂起,这就是我发现的有效方法。

          【讨论】:

            【解决方案10】:

            我刚刚找到了一个更好的解释,但还没有尝试过。看看 - http://discussion.accuwebhost.com/linux-server/1096-how-enable-shell_exec-function-one-account.html

            【讨论】:

            • 我认为他无法访问这些配置,否则无论如何他都可以自己启用它。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-10-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多