【发布时间】:2018-01-21 14:57:06
【问题描述】:
【问题讨论】:
【问题讨论】:
PECL 包是用 C 编写的,需要针对特定的 PHP 版本和操作系统(以及 ZTS 和 CPU 架构等其他变量)进行编译。
您需要在.phar 文件中为上述变量的每个可能组合打包编译的库,然后自己加载正确的库。
虽然这当然是可行的,但我不会投入巨大的努力。而是检查扩展是否已加载并生成一个很好的错误消息,告诉如果没有加载该怎么办。
【讨论】:
我同意 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 是否真的是您正在创建的那种应用程序的正确工具。
【讨论】: