Binärpaket
Webman unterstützt die Paketierung von Projekten zu einer Binärdatei, sodass Webman ohne PHP-Umgebung auf Linux-Systemen ausgeführt werden kann.
Hinweis
Die gepackte Datei unterstützt derzeit nur die Ausführung auf Linux-Systemen mit x86_64-Architektur und nicht auf Windows- und Mac-Systemen.
Es muss diephar
-Konfiguration inphp.ini
deaktiviert werden, alsophar.readonly = 0
setzen.
Installieren des Befehlszeilenwerkzeugs
composer require webman/console
Paketierung
Führen Sie den Befehl aus
php webman build:bin
Sie können auch die PHP-Version angeben, mit der gepackt werden soll, zum Beispiel
php webman build:bin 8.1
Nach der Paketierung wird im bulid-Verzeichnis eine Datei webman.bin
erstellt.
Starten
Laden Sie webman.bin
auf den Linux-Server hoch und führen Sie ./webman.bin start
oder ./webman.bin start -d
aus, um zu starten.
Prinzip
- Zuerst wird das lokale Webman-Projekt in eine PHAR-Datei gepackt.
- Dann wird PHP8.x.micro.sfx remote heruntergeladen.
- PHP8.x.micro.sfx und die PHAR-Datei werden zu einer Binärdatei zusammengefügt.
Hinweise
- Es wird dringend empfohlen, dass die lokale PHP-Version mit der Version übereinstimmt, mit der gepackt wird, z. B. lokal ist PHP8.1, dann sollte auch PHP8.1 zum Packen verwendet werden, um Kompatibilitätsprobleme zu vermeiden.
- Die Paketierung lädt den Quellcode von PHP8 herunter, installiert ihn aber nicht lokal, was die lokale PHP-Umgebung nicht beeinflusst.
webman.bin
unterstützt derzeit nur die Ausführung auf Linux-Systemen mit x86_64-Architektur und nicht auf Mac-Systemen.- Das gepackte Projekt unterstützt kein Reload; zur Aktualisierung des Codes ist ein Neustart erforderlich.
- Standardmäßig wird die env-Datei nicht gepackt (gesteuert durch exclude_files in
config/plugin/webman/console/app.php
), daher sollte die env-Datei im selben Verzeichnis wiewebman.bin
abgelegt werden. - Während des Betriebs wird im Verzeichnis von
webman.bin
ein runtime-Verzeichnis erstellt, um Protokolldateien zu speichern. - Derzeit liest
webman.bin
keine externe php.ini-Datei. Wenn Sie eine benutzerdefinierte php.ini benötigen, setzen Sie dies im Feld custom_ini in der Datei/config/plugin/webman/console/app.php
. - Einige Dateien müssen möglicherweise nicht gepackt werden; Sie können dies in
config/plugin/webman/console/app.php
konfigurieren, um zu vermeiden, dass die gepackte Datei zu groß wird. - Die Binärpaketierung unterstützt keine Verwendung von Swoole-Koroutinen.
- Speichern Sie niemals von Benutzern hochgeladene Dateien im Binärpaket, da die Verwendung des
phar://
-Protokolls für die Bearbeitung von Benutzerdateien sehr riskant ist (phar Deserialisierungsanfälligkeiten). Benutzerhochgeladene Dateien müssen getrennt auf einem anderen Speicherort gespeichert werden. - Wenn Ihr Geschäft das Hochladen von Dateien in das public-Verzeichnis erfordert, müssen Sie das public-Verzeichnis separat in das Verzeichnis von
webman.bin
legen. In diesem Fall müssen Sieconfig/app.php
wie folgt konfigurieren und erneut packen.'public_path' => base_path(false) . DIRECTORY_SEPARATOR . 'public',
Separates Herunterladen von statischem PHP
Manchmal möchten Sie einfach keine PHP-Umgebung bereitstellen, sondern nur eine ausführbare PHP-Datei. Klicken Sie hier, um statisches PHP herunterzuladen.
Hinweis
Wenn Sie der statischen PHP eine php.ini-Datei zuweisen möchten, verwenden Sie den folgenden Befehlphp -c /your/path/php.ini start.php start -d
.
Unterstützte Erweiterungen
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.
Projektquellen
https://github.com/crazywhalecc/static-php-cli
https://github.com/walkor/static-php-cli