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:binTambién puede especificar qué versión de PHP usar para el empaquetado, por ejemplo:
php webman build:bin 8.1Despué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.sfxde forma remota a la máquina local.
- Combina php8.x.micro.sfxy 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.binactualmente 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_filesenconfig/plugin/webman/console/app.php), por lo que el archivo env debe colocarse en el mismo directorio quewebman.binal iniciar.
- Durante la ejecución, se generará un directorio runtime en el mismo directorio que webman.binpara almacenar archivos de registro.
- Actualmente, webman.binno leerá el archivo php.ini externo. Si necesita un php.ini personalizado, configúrelo en el campocustom_inidel 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.phppara 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.phpde 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