【问题标题】:Bundle PECL extension in a phar在 phar 中捆绑 PECL 扩展
【发布时间】:2018-01-21 14:57:06
【问题描述】:

PHPncurses library没有安装在普通的php安装上,你必须将它安装为PECL extension

我想将它捆绑到一个 php phar 应用程序中。

这可能吗?怎么做?

【问题讨论】:

    标签: php ncurses pecl phar


    【解决方案1】:

    PECL 包是用 C 编写的,需要针对特定​​的 PHP 版本和操作系统(以及 ZTS 和 CPU 架构等其他变量)进行编译。

    您需要在.phar 文件中为上述变量的每个可能组合打包编译的库,然后自己加载正确的库。

    虽然这当然是可行的,但我不会投入巨大的努力。而是检查扩展是否已加载并生成一个很好的错误消息,告诉如果没有加载该怎么办。

    【讨论】:

      【解决方案2】:

      我同意 cweiske 的回答。

      我理解您为什么会对这样做感兴趣,但现实情况是 .phar 的 PHP 的先决条件意味着它们永远不会是独立的可执行文件。它们就像 java .jar 文件。在每种情况下,都需要相关的运行时环境。

      建议的PHP解决方案很简单:

      if (!extension_loaded('ncurses')) {
          echo "The ncurses Extension is required.  Use PECL or your system package manager to install it.  See http://php.net/ncurses for more information."
          exit;
      }
      

      话虽如此,如果我的假设是正确的,那么无论您尝试使用 ncurses 创建什么程序,最好用可编译成可执行文件(c、c++)的自包含语言编写。

      或者至少是一种能够以强大而简单的方式处理应用程序打包的语言(python、Ruby、Golang)。特别是对于像 Docker 这样的跨平台工具以及像 termui 这样的终端库对 Golang 非常感兴趣,我认为您应该考虑 PHP 是否真的是您正在创建的那种应用程序的正确工具。

      【讨论】:

        猜你喜欢
        • 2011-11-27
        • 2011-12-03
        • 2012-02-19
        • 1970-01-01
        • 2020-04-05
        • 1970-01-01
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        相关资源
        最近更新 更多