Imballaggio Binario
Webman supporta l'imballaggio di un progetto in un file binario, consentendo a Webman di funzionare su sistemi Linux senza un ambiente PHP.
Attenzione
Attualmente, i file imballati sono supportati solo su sistemi Linux con architettura x86_64 e non supportano sistemi Windows e Mac.
È necessario disattivare l'opzione di configurazione phar inphp.ini
, impostandophar.readonly = 0
.
Installazione degli Strumenti da Linha di Comando
composer require webman/console
Imballaggio
Esegui il comando
php webman build:bin
Puoi anche specificare quale versione di PHP utilizzare per l'imballaggio, ad esempio
php webman build:bin 8.1
Dopo l'imballaggio verrà generato un file webman.bin
nella directory bulid.
Avvio
Carica webman.bin
sul server Linux ed esegui ./webman.bin start
o ./webman.bin start -d
per avviarlo.
Principio
- Innanzitutto, il progetto Webman locale viene impacchettato in un file phar.
- Poi viene scaricato php8.x.micro.sfx nel sistema locale.
- Il file php8.x.micro.sfx e il file phar vengono concatenati per formare un file binario.
Note Importanti
- Si consiglia vivamente di mantenere la stessa versione di PHP sia localmente che nell'imballaggio, ad esempio se localmente si utilizza PHP 8.1, imballa anche con PHP 8.1, per evitare problemi di compatibilità.
- L'imballaggio scaricherà il codice sorgente di PHP 8, ma non verrà installato localmente, non influenzando l'ambiente PHP locale.
webman.bin
attualmente supporta solo l'esecuzione su sistemi Linux con architettura x86_64 e non su sistemi Mac.- I progetti imballati non supportano il reload, aggiornare il codice richiede un restart.
- Per impostazione predefinita, il file env non viene imballato (controllato da exclude_files in
config/plugin/webman/console/app.php
), quindi il file env dovrebbe trovarsi nella stessa directory diwebman.bin
durante l'avvio. - Durante l'esecuzione verrà creata una directory runtime nella directory di
webman.bin
per memorizzare i file di log. - Attualmente,
webman.bin
non legge i file php.ini esterni. Se è necessario personalizzare php.ini, imposta custom_ini nel file/config/plugin/webman/console/app.php
. - Alcuni file non necessitano di essere imballati, è possibile escluderli impostando
config/plugin/webman/console/app.php
, evitando che il file imballato diventi troppo grande. - L'imballaggio binario non supporta l'uso di coroutines Swoole.
- Non memorizzare i file caricati dagli utenti all'interno del pacchetto binario, poiché operare su file caricati dagli utenti con il protocollo
phar://
è estremamente pericoloso (vulnerabilità di deserializzazione phar). I file caricati dagli utenti devono essere memorizzati su un disco separato al di fuori del pacchetto. - Se la tua attività richiede di caricare file nella directory pubblica, è necessario separare la directory pubblica e posizionarla nella directory di
webman.bin
, in questo caso dovrai configurareconfig/app.php
come segue e ripetere l'imballaggio.'public_path' => base_path(false) . DIRECTORY_SEPARATOR . 'public',
Download Separato di PHP Statico
A volte, non vuoi semplicemente implementare un ambiente PHP, ma hai solo bisogno di un file eseguibile PHP. Clicca qui per scaricare PHP statico.
Nota
Se hai bisogno di specificare un file php.ini per PHP statico, usa il seguente comandophp -c /your/path/php.ini start.php start -d
.
Estensioni Supportate
Core, date, libxml, openssl, pcre, sqlite3, zlib, amqp, apcu, bcmath, calendar, ctype, curl, dba, dom, sockets, event, hash, fileinfo, filter, gd, gettext, json, iconv, SPL, session, standard, mbstring, igbinary, imagick, exif, mongodb, msgpack, mysqlnd, mysqli, pcntl, PDO, pdo_mysql, pdo_pgsql, pdo_sqlite, pdo_sqlsrv, pgsql, Phar, posix, readline, redis, Reflection, shmop, SimpleXML, soap, sodium, sqlsrv, sysvmsg, sysvsem, sysvshm, tokenizer, xlswriter, xml, xmlreader, xmlwriter, xsl, zip, memcache, Zend OPcache.
Origine del Progetto
https://github.com/crazywhalecc/static-php-cli
https://github.com/walkor/static-php-cli