حزم ثنائية
يدعم webman حزم المشروع في ملف ثنائي، مما يجعل webman قادرًا على التشغيل على نظام Linux دون الحاجة إلى بيئة PHP.
ملاحظة
الملفات المعبأة حاليًا تدعم التشغيل فقط على أنظمة Linux المعمارية x86_64 ، ولا تدعم أنظمة Windows و Mac.
يجب تعطيل خيار تكوينphar
فيphp.ini
، أي تعيينphar.readonly = 0
.
تثبيت أداة سطر الأوامر
composer require webman/console
الحزم
قم بتشغيل الأمر
php webman build:bin
يمكنك أيضًا تحديد إصدار PHP الذي تريد استخدامه للحزم، على سبيل المثال
php webman build:bin 8.1
بعد الحزمات، سيتم إنشاء ملف webman.bin
في دليل bulid.
بدء التشغيل
قم بتحميل webman.bin إلى خادم Linux، ثم نفذ ./webman.bin start
أو ./webman.bin start -d
ليبدأ التشغيل.
المبدأ
- أولاً، يتم حزم مشروع webman المحلي في ملف phar.
- ثم يتم تنزيل php8.x.micro.sfx عن بعد إلى المحلية.
- يتم دمج php8.x.micro.sfx وملف phar في ملف ثنائي.
نقاط مهمة
- يُنصح بشدة أن يتطابق إصدار PHP المحلي مع إصدار الحزم، على سبيل المثال إذا كان المحلي هو php8.1، يجب أن يكون الحزم أيضًا php8.1، لتجنب مشاكل التوافق.
- عملية الحزم ستقوم بتنزيل كود المصدر لـ PHP 8، لكنها لن تثبته محليًا، وبالتالي لن تؤثر على بيئة PHP المحلية.
- يتم تشغيل webman.bin حاليًا على أنظمة Linux المعمارية x86_64 فقط، ولا يدعم التشغيل على نظام Mac.
- المشاريع المعبأة لا تدعم إعادة التحميل، يتعين إعادة تشغيل الخدمة لتحديث الكود.
- بشكل افتراضي، لا يتم حزم ملفات env (
config/plugin/webman/console/app.php
يتحكم في exclude_files)، لذا يجب وضع ملف env في نفس دليل webman.bin عند بدء التشغيل. - أثناء التشغيل، سيتم إنشاء دليل runtime في نفس مسار webman.bin لتخزين ملفات السجل.
- حاليًا، webman.bin لا يقوم بقراءة ملف php.ini الخارجي، إذا كنت بحاجة إلى custom php.ini، يرجى إعداده في ملف
/config/plugin/webman/console/app.php
في custom_ini. - بعض الملفات لا تحتاج إلى الحزم، يمكنك إعداد استبعادها في
config/plugin/webman/console/app.php
، لتجنب زيادة حجم الملف المعبأ بشكل مفرط. - الحزم الثنائية لا تدعم استخدام تعاون swoole.
- يجب عدم تخزين ملفات المستخدم المرفوعة داخل الحزمة الثنائية، لأن التعامل مع ملفات المستخدم المرفوعة باستخدام بروتوكول
phar://
هو أمر خطير جدًا (ثغرة تسلسل phar). يجب تخزين الملفات التي يرفعها المستخدم في قرص خارج الحزمة. - إذا كانت أعمالك تتطلب رفع ملفات إلى دليل public، يجب فصل دليل public ووضعه في نفس دليل webman.bin، وفي هذه الحالة تحتاج إلى تكوين
config/app.php
كما يلي وإعادة حزم المشروع.'public_path' => base_path(false) . DIRECTORY_SEPARATOR . 'public',
تنزيل PHP ثابت بشكل منفصل
أحيانًا، قد لا ترغب في نشر بيئة PHP، وتحتاج فقط إلى ملف تنفيذ PHP، اضغط هنا لتنزيل PHP الثابت.
تلميح
إذا كنت بحاجة إلى تخصيص ملف php.ini لـ PHP الثابت، استخدم الأمر التاليphp -c /your/path/php.ini start.php start -d
.
الإضافات المدعومة
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.
مصدر المشروع
https://github.com/crazywhalecc/static-php-cli
https://github.com/walkor/static-php-cli