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 die phar-Konfiguration in php.ini deaktiviert werden, also phar.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 wie webman.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 Sie config/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 Befehl php -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