由于需要使用apcu擴(kuò)展,所以自己編譯了一份php8.1靜態(tài)文件,一次編譯了php8.1-static和micro.sfx兩個(gè)文件。 php8.1-static用于開(kāi)發(fā)環(huán)境并未出現(xiàn)任何問(wèn)題,但是將自己的micro.sfx拷貝到build/目錄下打包二進(jìn)制后,二進(jìn)制文件不能執(zhí)行,提示"only run in command line mode"。懷疑是編譯的時(shí)候少東西
編譯語(yǔ)句為:
$ ./spc-linux-x86_64 build --build-cli --build-micro "bcmath,apcu,calendar,ctype,curl,dom,event,exif,ffi,fileinfo,filter,gd,iconv,inotify,mbstring,mongodb,mysqlnd,openssl,pcntl,pdo,pdo_mysql,pdo_sqlite,phar,posix,readline,redis,session,shmop,simplexml,soap,sockets,sqlite3,tokenizer,xml,xmlreader,zip,zlib,xmlwriter" --debug -I "memory_limit=512M"
解決方案一:更新workerman至v4.1.14版本,其中兼容了PHP_SAPI為micro的方式(感謝老大@ walkor
立馬更新了這個(gè)版本)
解決方案二:編譯的時(shí)候增加參數(shù)--with-micro-fake-cli
,編譯以后PHP_SAPI的值依舊是cli (感謝@crazywhalecc
原作者提供的幫助)
升級(jí)下workerman
??? 這樣感覺(jué)不太好維護(hù),請(qǐng)問(wèn)官網(wǎng)維護(hù)的php8.1靜態(tài)文件和php8.1.micro.sfx都是咋編譯的,加了哪些參數(shù),我用官網(wǎng)的就沒(méi)有問(wèn)題。 我自己編譯的可能還會(huì)造成其他不可預(yù)料的問(wèn)題
我找了crazywhalecc/static-php-cli項(xiàng)目說(shuō)明,沒(méi)找到怎么選項(xiàng),咱們workerman維護(hù)的sfx加了啥
我分別使用兩個(gè)sfx打印了PHP_SAPI的值,發(fā)現(xiàn)我自己的sfx是micro,workerman官網(wǎng)編譯的sfx值是cli。 雖然不明白官網(wǎng)怎么做到的,但是workerman兼容一下應(yīng)該也行。不過(guò)老大難道改了crazywhalecc/static-php-cli源碼再編譯的么