علمی اساس
zinnector dev کے ساتھ مقامی ڈیولپمنٹ
زِننیکٹر ڈیو (zinnector dev) آپ کی اپنی مشین پر ایک حقیقی WordPress کس طرح چلاتا ہے: دو رنٹائمز (بغیر ڈوکر کے ویب اسمبلی، یا ڈوکر میں نیٹو پی ایچ پی)، پی ایچ پی اور ورڈپریس کا ورژن منتخب کرنا، آپ کے پروجیکٹ سے کیا سرو کیا جاتا ہے، 570 ایم بی کا رنٹائم کہاں رہتا ہے، اور نوڈ 26 (Node 26) پر کیا ہوتا ہے۔
zinnector dev آپ کی اپنی مشین پر ایک حقیقی WordPress چلاتا ہے، جو آپ کے پروجیکٹ میں موجود پلگ انز اور تھیمز کو آپ کے منتخب کردہ PHP ورژن کے ساتھ فراہم کرتا ہے۔ یہ مضمون ان دو رن ٹائمز کی وضاحت کرتا ہے جنہیں یہ استعمال کر سکتا ہے، ورژنز کا انتخاب کیسے کریں، کہاں سے کیا فراہم کیا جاتا ہے، اور ڈسک پر رن ٹائم کہاں موجود ہوتا ہے — تاکہ آپ مقامی طور پر جس چیز کی جانچ کرتے ہیں، وہی ڈیپلوئے (deploy) ہو۔
دو رن ٹائمز، اور دونوں حقیقی کیوں ہیں
Playground ڈیفالٹ ہے۔ WordPress Playground، PHP کو WebAssembly میں کمپائل کرتا ہے اور اسے Node کے اندر چلاتا ہے، تاکہ ایک ایسا لیپ ٹاپ جس میں Node کے علاوہ کچھ بھی انسٹال نہیں ہے، سیکنڈوں میں WordPress کو بوٹ کر دے۔ 5.2 سے 8.5 تک کا کوئی بھی PHP ورژن دستیاب ہے۔ اس میں PHP ایکسٹینشنز کا ایک چھوٹا سیٹ شامل ہے (intl، redis، memcached جیسا کہ موجودہ بلڈ پر ناپا گیا ہے)، جو زیادہ تر پلگ ان اور تھیم کے کام کے لیے کافی ہے۔
Docker نیٹیو php-fpm اور MariaDB کنٹینرز چلاتا ہے۔ یہ سست ہے، اسے ایک Docker ڈیمن اور تقریباً 1.2 GB کی امیجز کی ضرورت ہوتی ہے، اور یہ PHP 7.4 سے 8.5 کو سپورٹ کرتا ہے — لیکن یہ مکمل ایکسٹینشن سیٹ کے ساتھ ایک نیٹیو PHP چلاتا ہے، بشمول imagick اور gd۔ یہ اس وقت درست جواب ہے جب آپ کو کسی ایسی ایکسٹینشن کی جانچ کرنے کی ضرورت ہو جو WebAssembly بلڈ میں شامل نہیں ہے۔
zinnector dev # playground
zinnector dev --runtime docker # native PHP + MariaDB
Docker پر کبھی بھی خاموشی سے فال بیک (fall back) نہیں کیا جاتا۔ ایک ڈویلپر جو سمجھتا ہے کہ وہ 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 لکھتا ہے اور جسے آپ کو کمٹ (commit) کرنا چاہیے، تاکہ پروجیکٹ پر موجود ہر شخص ایک جیسے ورژنز چلائے۔ کمانڈ لائن پر ایک فلیگ اس رن کے لیے فائل پر فوقیت رکھتا ہے۔
وہ ورژن جو آپ ڈکلیئر (declare) کرتے ہیں اور وہ ورژن جو چلت (runs) ہے، مختلف حقائق ہیں۔ zinnector dev --once رن ٹائم کو بوٹ کرتا ہے، وہ تمام معلومات پرنٹ کرتا ہے جو یہ رپورٹ کرتا ہے — PHP ورژن، WordPress ورژن، لوڈ شدہ ایکسٹینشنز — اور رک جاتا ہے۔ zinnector check --probe اسی پیمائش کو استعمال کرتا ہے جب وہ آپ کے پروجیکٹ کا ہوسٹنگ سلاٹ سے موازنہ کرتا ہے۔
آپ کے پروجیکٹ سے کیا فراہم کیا جاتا ہے
رن ٹائم آپ کے پروجیکٹ کی wp-content/plugins، wp-content/themes اور wp-content/mu-plugins ڈائریکٹریز کو براہ راست ماؤنٹ کرتا ہے، تاکہ آپ کی محفوظ کردہ فائل اگلی ری لوڈ پر براہ راست دستیاب ہو جائے۔ وہ ڈائریکٹریز جو موجود ہیں لیکن ان میں کوئی حقیقی مواد نہیں ہے، جان بوجھ کر ماؤنٹ نہیں۔ کی جاتیں: رن ٹائم کی اپنی تھیمز کے اوپر ایک خالی themes/ کو ماؤنٹ کرنے سے WordPress کے پاس کوئی تھیم نہیں بچے گی، جو آپ کی سائٹ کے بجائے ایک خالی 500 ایرر ہوگا۔ یہی وجہ ہے کہ اسکیفولڈ (scaffold) خالی ڈائریکٹریز کو .gitkeep کے ساتھ رکھتا ہے اور یہی وجہ ہے کہ وہ اس وقت تک کسی چیز کو چھپاتی نہیں ہیں جب تک کہ آپ ان میں کوئی تھیم نہ رکھیں۔
رن ٹائم کہاں موجود ہوتا ہے
WordPress رن ٹائم CLI کے ساتھ فراہم کیے جانے کے بجائے پہلی بار استعمال پر ڈاؤن لوڈ کیا جاتا ہے — ہر PHP بلڈ کو لے جانے والا پیکیج تقریباً 570 MB کا ہے، اور ایک ڈویلپر جو صرف سائٹس کی فہرست دیکھتا ہے، اسے اس کی قیمت نہیں چکانی چاہیے۔ اسے Zinnector® کے اپنے کیشے، ~/.cache/zinnector/runtimes/playground/<version> میں رکھا جاتا ہے (یا جہاں بھی ZINNECTOR_CACHE_DIR اشارہ کرتا ہے)، آپ کے پروجیکٹ میں کبھی نہیں، تاکہ یہ آپ کی ریپوزیٹری میں یا zinnector push کی پیمائش کے درخت میں نہ آ سکے۔ ڈاؤن لوڈ آپ کے اپنے npm کے ذریعے کیا جاتا ہے، جو node npm-cli.js کے طور پر چلتا ہے — شیل (shell) کے ذریعے کبھی نہیں۔
رن ٹائم ورژن CLI ورژن کے ساتھ منسلک ہے، لہذا ایک پروجیکٹ پر دو ڈویلپرز ایک جیسے PHP بلڈز چلاتے ہیں۔ zinnector dev --reset-runtime انسٹال شدہ رن ٹائم کو ہٹا دیتا ہے اور اسے دوبارہ انسٹال کرتا ہے، جو اس رن ٹائم کے لیے درست حل ہے جو انسٹال تو ہو گیا تھا لیکن بوٹ نہیں ہوگا۔
Node 26 یا اس سے نئے ورژن پر
CLI خود 24 یا اس سے اوپر کے کسی بھی Node پر چلتا ہے۔ تاہم، رن ٹائم کا نیٹیو ماڈیول، صرف Node 24 اور 25 کے لیے پہلے سے بنے ہوئے بائنریز فراہم کرتا ہے (ستمبر 2026 تک)۔ کسی بھی چیز کو کمپائل کرنے کے بجائے — جس کا مطلب ونڈوز پر Visual Studio انسٹال کرنا ہے — Zinnector® صرف رن ٹائم کے لیے ایک Node 24 حاصل کرتا ہے، جو تقریباً 30 MB کا ہے، جس کی تصدیق nodejs.org کے شائع کردہ چیکسمس (checksums) سے کی جاتی ہے، اور اسے اسی کیشے میں رکھتا ہے۔ انسٹال کرنے کا پرامپٹ یہ بتاتا ہے جب یہ لاگو ہوتا ہے۔ آپ کے اپنے Node میں کچھ بھی نہیں بدلتا۔
متعلقہ
کیا اب بھی پھنسے ہوئے ہیں؟
ہر پلان میں سپورٹ شامل ہے اور آپ کی اپنی زبان میں جوابات ملتے ہیں۔
سپورٹ سے رابطہ کریں → تمام مضامین →