在一个phar中捆绑PECL扩展

时间:2017-08-13 17:44:58

标签: php ncurses pecl phar

PHP ncurses library未安装在正常的php安装上,您必须将其安装为PECL extension

我想将它捆绑在php phar应用程序中。

这可能吗?怎么做?

2 个答案:

答案 0 :(得分:1)

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

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

虽然这肯定是可行的,但这是我不会投入的巨大努力。而是检查扩展是否已加载并生成一条很好的错误消息,告诉它该做什么,如果不是。

答案 1 :(得分:0)

我同意cweiske的回答。

我明白为什么你会对此感兴趣,但实际情况是PHP的先决条件是.phar意味着它们永远不会是一个独立的可执行文件。它们就像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是否真的是你正在创建的那种应用程序的正确工具。