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 in php.ini, impostando phar.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 di webman.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 configurare config/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 comando php -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