دستور zinnector dev یک WordPress واقعی را روی دستگاه خودتان اجرا میکند و افزونهها و پوستههای موجود در پروژهتان را با نسخه PHP انتخابی شما ارائه میدهد. این مقاله دو زمان اجرای (runtime) قابل استفاده، نحوه انتخاب نسخهها، اینکه چه مواردی از کجا ارائه میشوند و زمان اجرا در کجای دیسک قرار میگیرد را توضیح میدهد — تا آنچه بهصورت محلی آزمایش میکنید دقیقاً همان چیزی باشد که مستقر میکنید.
دو زمان اجرا، و اینکه چرا هر دو واقعی هستند
Playground گزینه پیشفرض است. WordPress Playground کد PHP را به WebAssembly کامپایل کرده و آن را درون Node اجرا میکند؛ بنابراین یک لپتاپ که چیزی جز Node روی آن نصب نیست، ظرف چند ثانیه یک WordPress را راهاندازی میکند. هر نسخه PHP از 5.2 تا 8.5 در دسترس است. این محیط شامل مجموعه کوچکی از اکستنشنهای PHP است (intl، redis و memcached طبق سنجش در بیلد فعلی) که برای بیشتر کارهای مربوط به افزونه و پوسته کافی است.
Docker کانتینرهای بومی php-fpm و MariaDB را اجرا میکند. این روش کندتر است، به یک دیمن Docker و حدود 1.2 گیگابایت ایمیج نیاز دارد و از PHP نسخه 7.4 تا 8.5 پشتیبانی میکند — اما یک PHP بومی را به همراه مجموعه کامل اکستنشنها، از جمله imagick و gd، اجرا مینماید. هنگامی که نیاز به آزمایش اکستنشنی دارید که بیلد WebAssembly فاقد آن است، این روش راهحل واقعی است.
zinnector dev # playground
zinnector dev --runtime docker # native PHP + MariaDB
هرگز بهطور خودکار و پنهانی به Docker بازگشت داده نمیشود. توسعهدهندهای که فکر میکند روی WebAssembly کار میکند در حالی که واقعاً روی Docker است، توسط ابزاری که قصد کمک داشته پاسخ اشتباهی دریافت کرده است؛ بنابراین باید صراحتاً با نام فراخوانی شود.
انتخاب نسخههای PHP و WordPress
zinnector dev --php 8.1 --wp 6.7 # develop against a specific pair
zinnector dev --port 9401 # when 9400 is taken
zinnector dev --no-login # do not sign in to wp-admin automatically
zinnector dev --verbose # show the runtime's own output
مقادیر پیشفرض از فایل zinnector.json در پروژه میآیند — مقادیر php، wordpress، runtime و port — که دستور zinnector new آن را مینویسد و شما باید آن را کامیت کنید تا همه افراد فعال در پروژه نسخههای یکسانی را اجرا کنند. یک فلگ در خط فرمان برای آن نوبتِ اجرا، اولویت بالاتری نسبت به فایل دارد.
نسخهای که اعلام میکنید و نسخهای که اجرا میشود دو واقعیت متفاوت هستند. دستور zinnector dev --once زمان اجرا را راهاندازی میکند، آنچه را که واقعاً گزارش میدهد چاپ میکند — نسخه PHP، نسخه WordPress، اکستنشنهای بارگذاریشده — و متوقف میشود. دستور zinnector check --probe هنگام مقایسه پروژه شما با یک اسلات میزبانی، از همین سنجش استفاده میکند.
چه مواردی از پروژه شما ارائه میشود
زمان اجرا دایرکتوریهای wp-content/plugins، wp-content/themes و wp-content/mu-plugins پروژه شما را مستقیماً مانت میکند؛ بنابراین فایلی که ذخیره میکنید در بارگذاری مجدد بعدی اعمال میشود. دایرکتوریهایی که وجود دارند اما حاوی محتوای واقعی نیستند، عمداً مانت نمیشوند: مانت شدن یک دایرکتوری خالی themes/ روی پوستههای خودِ زمان اجرا باعث میشود WordPress کاملاً بدون پوسته بماند، که بهجای سایت شما خطای ۵۰۰ خالی ایجاد میکند. به همین دلیل ساختار اولیه دایرکتوریهای خالی را با یک فایل .gitkeep نگه میدارد و تا زمانی که پوستهای درون آنها قرار ندهید، مانع از دسترسی به هیچ فایلی نمیشوند.
محل ذخیرهسازی زمان اجرا
زمان اجرای WordPress بهجای اینکه همراه با CLI عرضه شود، در اولین استفاده دانلود میشود — پکیجی که شامل تمام بیلدهای PHP است حدود ۵۷۰ مگابایت حجم دارد و توسعهدهندهای که فقط سایتها را فهرست میکند نباید هزینه دانلود آن را بپردازد. این فایلها در کَش اختصاصی Zinnector®، مسیر ~/.cache/zinnector/runtimes/playground/<version> (یا هر جا که ZINNECTOR_CACHE_DIR اشاره کند)، ذخیره میشوند و هرگز در پروژه شما قرار نمیگیرند، بنابراین نمیتوانند وارد ریپازیتوری شما یا ساختار درختی مورد ارزیابی zinnector push شوند. دانلود توسط npm خودتان و با اجرای node npm-cli.js انجام میشود — هرگز از طریق شل انجام نمیگیرد.
نسخه زمان اجرا به نسخه CLI قفل شده است، بنابراین دو توسعهدهنده روی یک پروژه بیلدهای PHP یکسانی را اجرا میکنند. دستور zinnector dev --reset-runtime زمان اجرای نصبشده را حذف کرده و مجدداً نصب میکند، که راهحل رفع مشکل زمان اجرایی است که نصب شده اما راهاندازی نمیشود.
روی Node 26 یا جدیدتر
خود CLI روی هر نسخهای از Node از 24 به بالا اجرا میشود. با این حال، ماژول بومی زمان اجرا فقط برای Node 24 و 25 باینریهای از پیش ساختهشده ارائه میدهد (تا سپتامبر ۲۰۲۶). بهجای کامپایل هر چیزی — که در ویندوز به معنای نصب Visual Studio است — Zinnector® فقط برای زمان اجرا یک Node 24 (حدود ۳۰ مگابایت) را که بر اساس چکسامهای منتشرشده در nodejs.org تأیید شده است، در همان کَش دانلود میکند. پیام اعلان نصب در صورت لزوم این موضوع را اعلام میکند. هیچ تغییری در Node اصلی شما ایجاد نمیشود.
موارد مرتبط