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 dansphp.ini
, c'est-à-dire de définirphar.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 quewebman.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, configurezconfig/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 suivantephp -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