Empaquetado binario
Webman admite empaquetar proyectos en un archivo binario, lo que permite que Webman funcione en sistemas Linux sin un entorno PHP.
Nota
Los archivos empaquetados actualmente solo son compatibles con sistemas Linux de arquitectura x86_64 y no son compatibles con sistemas Windows y Mac.
Debe desactivar la opción de configuración phar enphp.ini
, es decir, establecerphar.readonly = 0
.
Instalación de la herramienta de línea de comandos
composer require webman/console
Empaquetado
Ejecute el comando:
php webman build:bin
También puede especificar qué versión de PHP usar para el empaquetado, por ejemplo:
php webman build:bin 8.1
Después del empaquetado, se generará un archivo webman.bin
en el directorio bulid.
Inicio
Suba webman.bin
al servidor Linux y ejecute ./webman.bin start
o ./webman.bin start -d
para iniciar.
Principio
- Primero, empaqueta el proyecto local de Webman en un archivo phar.
- Luego, descarga
php8.x.micro.sfx
de forma remota a la máquina local. - Combina
php8.x.micro.sfx
y el archivo phar en un archivo binario.
Consideraciones
- Se recomienda encarecidamente que la versión de PHP local coincida con la versión empaquetada; por ejemplo, si la local es PHP 8.1, use PHP 8.1 para el empaquetado, para evitar problemas de compatibilidad.
- El empaquetado descargará el código fuente de PHP 8, pero no lo instalará localmente, no afectará el entorno PHP local.
webman.bin
actualmente solo es compatible con sistemas Linux de arquitectura x86_64 y no es compatible con sistemas Mac.- El proyecto empaquetado no admite
reload
, se requiere reiniciar para actualizar el código. - Por defecto, no se empaquetará el archivo env (controlado por
exclude_files
enconfig/plugin/webman/console/app.php
), por lo que el archivo env debe colocarse en el mismo directorio quewebman.bin
al iniciar. - Durante la ejecución, se generará un directorio runtime en el mismo directorio que
webman.bin
para almacenar archivos de registro. - Actualmente,
webman.bin
no leerá el archivo php.ini externo. Si necesita un php.ini personalizado, configúrelo en el campocustom_ini
del archivo/config/plugin/webman/console/app.php
. - Algunos archivos pueden no necesitar ser empaquetados, y puede configurarlo para excluirlos en
config/plugin/webman/console/app.php
para evitar que el archivo empaquetado sea demasiado grande. - El empaquetado binario no admite el uso de corutinas de Swoole.
- No almacene archivos subidos por el usuario dentro del paquete binario, ya que operar con archivos subidos por el usuario utilizando el protocolo
phar://
es muy peligroso (vulnerabilidad de deserialización de phar). Los archivos subidos por el usuario deben almacenarse por separado en un disco fuera del paquete. - Si su negocio requiere subir archivos al directorio public, debe extraer el directorio public y colocarlo en el mismo directorio que
webman.bin
, en este caso, debe configurarconfig/app.php
de la siguiente manera y volver a empaquetar.'public_path' => base_path(false) . DIRECTORY_SEPARATOR . 'public',
Descarga de PHP estático por separado
A veces, solo desea un archivo ejecutable de PHP sin desplegar el entorno de PHP. Haga clic aquí para descargar PHP estático.
Sugerencia
Si necesita especificar un archivo php.ini para PHP estático, use el siguiente comandophp -c /your/path/php.ini start.php start -d
.
Extensiones soportadas
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.
Fuentes del proyecto
https://github.com/crazywhalecc/static-php-cli
https://github.com/walkor/static-php-cli