zinnector dev በመረጡት የ PHP ስሪት፣ በእርስዎ ፕሮጀክት ውስጥ ያሉትን ፕለጊኖችና ገጽታዎች (themes) እያቀረበ እውነተኛ WordPressን በእራስዎ ማሽን ላይ ያስኬዳል። ይህ ጽሑፍ ሊጠቀምባቸው የሚችላቸውን ሁለት የሩጫ ጊዜያት (runtimes)፣ ስሪቶችን እንዴት እንደሚመርጡ፣ ምን ከየት እንደሚቀርብ፣ እና ሩጫ ጊዜው በዲስክ ላይ የት እንደሚቀመጥ ያብራራል — በዚህም በአካባቢዎ የሚሞክሩት ነገር በትክክል የሚያሰማሩት (deploy) እንዲሆን።
ሁለቱ የሩጫ ጊዜያት፣ እና ሁለቱም ለምን እውነተኛ እንደሆኑ
Playground ነባሪው ነው። WordPress Playground የ PHPን ኮድ ወደ WebAssembly ያጠናቅራል (compiles) እና በ Node ውስጥ ያስኬደዋል፤ ስለዚህ Node ብቻ የተጫነበት ላፕቶፕ በጥቂት ሰከንዶች ውስጥ WordPressን ያስነሳል። ከ 5.2 እስከ 8.5 ያለው ማንኛውም PHP ይገኛል። ለአብዛኛዎቹ የፕለጊን እና የገጽታ ሥራዎች በቂ የሆነ አነስተኛ የ PHP ኤክስቴንሽን ስብስብን (intl፣ redis፣ memcached አሁን ባለው ግንባታ መሠረት) ይዟል።
Docker ቤተኛ php-fpm እና የ MariaDB ኮንቴነሮችን ያስኬዳል። ቀርፋፋ ነው፣ የ Docker ዴሞን (daemon) እና ወደ 1.2 ጊባ የሚጠጉ ምስሎችን ይፈልጋል፣ እንዲሁም ከ 7.4 እስከ 8.5 PHPን ይደግፋል — ነገር ግን imagick እና gdን ጨምሮ ሙሉውን የኤክስቴንሽን ስብስብ የያዘ ቤተኛ PHPን ያስኬዳል። ሊሞክሩት የሚፈልጉት የ 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 የሚጽፋቸውና በፕሮጀክቱ ላይ ያለ ሁሉም ሰው ተመሳሳዩን ስሪት እንዲያሄድ እርስዎ በኮሚት (commit) ሊያስቀምጧቸው የሚገቡ ናቸው። በትዕዛዝ መስመሩ (command line) ላይ ያለ ባንዲራ (flag) ለዚያ ሩጫ ፋይሉን ይሽረዋል።
እርስዎ የሚያውጁት ስሪት እና የሚሠራው ስሪት የተለያዩ እውነታዎች ናቸው። zinnector dev --once ሩጫ ጊዜውን ያስነሳል፣ በትክክል የሚያሳውቀውን — የ PHP ስሪት፣ የ WordPress ስሪት፣ የተጫኑ ኤክስቴንሽንስ — ያትማል፣ ከዚያም ይቆማል። zinnector check --probe ፕሮጀክትዎን ከማስተናገጃ ማስቀመጫ (hosting slot) ጋር ሲያወዳድር ይኸውኑን ልኬት ይጠቀማል።
ከእርስዎ ፕሮጀክት ምን ይቀርባል
ሩጫ ጊዜው የፕሮጀክትዎን wp-content/plugins፣ wp-content/themes እና wp-content/mu-plugins ማውጫዎችን በቀጥታ ያገናኛል (mounts)፣ ስለዚህ ያስቀመጡት ፋይል በሚቀጥለው ዳግም መጫን ላይ ወዲያውኑ ይታያል። ያሉ ነገር ግን ምንም እውነተኛ ይዘት የሌላቸው ማውጫዎች ሆን ተብሎ አይገናኙም (not mounted)፦ በሩጫ ጊዜው የራሱ ገጽታዎች ላይ የተገናኘ ባዶ themes/ WordPressን ያለምንም ገጽታ ያስቀረዋል፣ ይህም የእርስዎ ድረ-ገጽ ሳይሆን ባዶ 500 ስህተት ይሆናል። ማዕቀፉ ባዶ ማውጫዎችን በ .gitkeep የሚያስቀምጥበት እና ገጽታ እስካላስገቡባቸው ድረስ ማንኛውንም ነገር የማይሸፍኑበት ምክንያት ይኸው ነው።
ሩጫ ጊዜው የት እንደሚገኝ
የ WordPress ሩጫ ጊዜ ከ CLI ጋር አብሮ ከመቅረብ ይልቅ በመጀመሪያው አጠቃቀም ላይ ይወርዳል — እያንዳንዱን የ PHP ግንባታ የያዘው ጥቅል ወደ 570 ሜባ ገደማ ነው፣ እና ድረ-ገጾችን ብቻ የሚዘረዝር ገንቢ ለዚህ ዋጋ መክፈል የለበትም። የሚቀመጠው በ Zinnector® የራሱ መሸጎጫ ውስጥ ነው፣ ~/.cache/zinnector/runtimes/playground/<version> (ወይም ZINNECTOR_CACHE_DIR በሚያመለክተው ቦታ) እንጂ በጭራሽ በእርስዎ ፕሮጀክት ውስጥ አይደለም፤ ስለዚህ በማከማቻዎ (repository) ውስጥ ወይም zinnector push በሚለካው ዛፍ ውስጥ ሊያልቅ አይችልም። ማውረዱ የሚከናወነው በእራስዎ npm አማካኝነት እንደ node npm-cli.js ሆኖ ነው — በጭራሽ በሼል (shell) በኩል አይደለም።
የሩጫ ጊዜው ስሪት ከ CLI ስሪት ጋር የተቆራኘ ነው፣ ስለዚህ በአንድ ፕሮጀክት ላይ ያሉ ሁለት ገንቢዎች ተመሳሳዩን የ PHP ግንባታዎች ያስኬዳሉ። zinnector dev --reset-runtime የተጫነውን ሩጫ ጊዜ አስወግዶ እንደገና ይጭነዋል፣ ይህም ለተጫነ ግን ለማይነሳ የሩጫ ጊዜ መፍትሔ ነው።
በ Node 26 ወይም ከዚያ በላይ ላይ
CLI ራሱ ከ 24 ጀምሮ ባለው በማንኛውም Node ላይ ይሠራል። ይሁን እንጂ የሩጫ ጊዜው ቤተኛ ሞጁል አስቀድመው የተገነቡ ባይነሪዎችን የሚያቀርበው ለ Node 24 እና 25 ብቻ ነው (እስከ መስከረም 2026 ድረስ)። ማንኛውንም ነገር ከማጠናቀር (compile) ይልቅ — ይህም በ Windows ላይ Visual Studio መጫን ማለት ነው — Zinnector® nodejs.org ከሚያትማቸው የቼክሰሞች (checksums) አንጻር የተረጋገጠውን ወደ 30 ሜባ ገደማ የሆነ Node 24 ለሩጫ ጊዜው ብቻ ወደ ተመሳሳዩ መሸጎጫ ያመጣል። በሚመለከተው ጊዜ የመጫኛ ጥያቄው ይህንን ያሳውቃል። በእራስዎ Node ላይ ምንም የሚለወጥ ነገር የለም።
ተዛማጅ