Emballage Binaire

Webman prend en charge l'emballage d'un projet sous forme d'un fichier binaire, ce qui permet à Webman de fonctionner sur des systèmes Linux sans environnement PHP.

Attention
Le fichier emballé ne prend actuellement en charge le fonctionnement que sur les systèmes Linux x86_64, sans prise en charge pour Windows et Mac.
Il est nécessaire de désactiver l'option de configuration phar dans php.ini, c'est-à-dire de définir phar.readonly = 0.

Installation de l'outil en ligne de commande

composer require webman/console

Emballage

Exécutez la commande

php webman build:bin

Vous pouvez également spécifier avec quelle version de PHP emballer, par exemple

php webman build:bin 8.1

Après l'emballage, un fichier webman.bin sera généré dans le répertoire build.

Démarrage

Téléchargez webman.bin sur un serveur Linux, puis exécutez ./webman.bin start ou ./webman.bin start -d pour démarrer.

Principe

  • Tout d'abord, le projet Webman local est emballé sous forme de fichier phar.
  • Ensuite, il télécharge le fichier php8.x.micro.sfx à distance.
  • Le fichier php8.x.micro.sfx et le fichier phar sont concaténés pour former un fichier binaire.

Remarques

  • Il est fortement recommandé que la version PHP locale et la version d'emballage soient identiques. Par exemple, si vous utilisez PHP 8.1 localement, utilisez également PHP 8.1 pour l'emballage, afin d'éviter des problèmes de compatibilité.
  • L'emballage téléchargera le code source de PHP 8, mais ne l'installera pas localement, ce qui n'affectera pas l'environnement PHP local.
  • Le fichier webman.bin prend actuellement en charge uniquement l'exécution sur des systèmes Linux x86_64, sans prise en charge pour les systèmes Mac.
  • Les projets emballés ne prennent pas en charge le rechargement, et pour mettre à jour le code, un redémarrage est nécessaire.
  • Par défaut, le fichier env n'est pas emballé (contrôlé par exclude_files dans config/plugin/webman/console/app.php), donc le fichier env doit être placé dans le même répertoire que webman.bin au démarrage.
  • Pendant l'exécution, un répertoire runtime sera généré dans le répertoire contenant webman.bin pour stocker les fichiers journaux.
  • Actuellement, webman.bin ne lira pas le fichier php.ini externe. Si vous avez besoin d'un php.ini personnalisé, veuillez le définir dans le champ custom_ini du fichier /config/plugin/webman/console/app.php.
  • Certains fichiers n'ont pas besoin d'être emballés. Vous pouvez les exclure en les réglant dans config/plugin/webman/console/app.php, afin d'éviter que le fichier emballé ne soit trop volumineux.
  • L'emballage binaire ne prend pas en charge l'utilisation des coroutines Swoole.
  • Ne stockez pas les fichiers téléchargés par les utilisateurs dans le package binaire, car il est très dangereux de manipuler les fichiers téléchargés par l'utilisateur avec le protocole phar:// (vulnérabilité de désérialisation phar). Les fichiers téléchargés par l'utilisateur doivent être stockés séparément sur un disque en dehors du package.
  • Si votre entreprise nécessite de télécharger des fichiers dans le répertoire public, vous devez séparer le répertoire public et le placer dans le répertoire contenant webman.bin. Dans ce cas, configurez config/app.php comme suit et refaites l'emballage.
    'public_path' => base_path(false) . DIRECTORY_SEPARATOR . 'public',

Téléchargement séparé de PHP statique

Parfois, vous ne souhaitez tout simplement pas déployer l'environnement PHP, mais avez besoin d'un fichier exécutable PHP. Cliquez ici pour télécharger PHP statique.

Suggérer
Si vous devez spécifier un fichier php.ini pour PHP statique, utilisez la commande suivante php -c /your/path/php.ini start.php start -d.

Extensions prises en charge

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.

Source du projet

https://github.com/crazywhalecc/static-php-cli
https://github.com/walkor/static-php-cli