答案 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是否真的是你正在创建的那种应用程序的正确工具。