2017-08-13 149 views

回答

0

我同意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)。尤其是對Golang對Docker等跨平臺工具以及終端庫如termui的興趣如此之大,我認爲您應該考慮PHP是否真的是您正在創建的那種應用程序的正確工具。

1

PECL包是用C編寫的,需要針對特定​​的PHP版本和操作系統(以及其他變量,如ZTS和CPU架構)進行編譯。

您需要將上述變量的每種可能組合都編譯的庫打包到您的.phar文件中,並自行加載正確的文件。

雖然這當然是可行的,但我不會投入巨大的努力。而是檢查擴展是否已加載,並生成一個很好的錯誤消息,告訴如果不是,請執行該操作。