Βάση γνώσεων

Τοπική ανάπτυξη με το zinnector dev

Πώς το zinnector dev εκτελεί ένα πραγματικό WordPress στον δικό σας υπολογιστή: τα δύο περιβάλλοντα εκτέλεσης (WebAssembly χωρίς Docker, ή εγγενές PHP σε Docker), η επιλογή έκδοσης PHP και WordPress, τι εξυπηρετείται από το έργο σας, πού βρίσκεται το περιβάλλον εκτέλεσης 570 MB και τι συμβαίνει στο Node 26.

Το zinnector dev εκτελεί ένα πραγματικό WordPress στον υπολογιστή σας, εξυπηρετώντας τα πρόσθετα και τα θέματα του έργου σας, με μια έκδοση PHP της επιλογής σας. Αυτό το άρθρο εξηγεί τους δύο χρόνους εκτέλεσης που μπορεί να χρησιμοποιήσει, πώς να επιλέξετε εκδόσεις, τι εξυπηρετείται από πού και πού βρίσκεται ο χρόνος εκτέλεσης στον δίσκο — έτσι ώστε αυτό που δοκιμάζετε τοπικά να είναι αυτό που αναπτύσσετε.

Οι δύο χρόνοι εκτέλεσης και γιατί είναι και οι δύο πραγματικοί

Το Playground είναι η προεπιλογή. Το WordPress Playground μεταγλωττίζει την PHP σε WebAssembly και την εκτελεί εντός του Node, οπότε ένας φορητός υπολογιστής χωρίς καμία εγκατάσταση εκτός από το Node εκκινεί ένα WordPress μέσα σε λίγα δευτερόλεπτα. Οποιαδήποτε PHP από 5.2 έως 8.5 είναι διαθέσιμη. Διαθέτει ένα μικρό σύνολο επεκτάσεων 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      # εγγενής PHP + MariaDB

Στο Docker δεν γίνεται ποτέ σιωπηλή επιστροφή (fallback). Ένας προγραμματιστής που νομίζει ότι βρίσκεται στο WebAssembly και στην πραγματικότητα βρίσκεται στο Docker έχει λάβει τη λάθος απάντηση από ένα εργαλείο που προσπαθεί να βοηθήσει, γι' αυτό και πρέπει να ζητηθεί ονομαστικά.

Επιλογή εκδόσεων PHP και WordPress

zinnector dev --php 8.1 --wp 6.7    # ανάπτυξη έναντι ενός συγκεκριμένου ζεύγους
zinnector dev --port 9401           # όταν το 9400 είναι κατειλημμένο
zinnector dev --no-login            # να μην γίνεται αυτόματη σύνδεση στο wp-admin
zinnector dev --verbose             # εμφάνιση της εξόδου του ίδιου του χρόνου εκτέλεσης

Οι προεπιλογές προέρχονται από το zinnector.json στο έργο — php, wordpress, runtime και port — το οποίο γράφει το zinnector new και το οποίο θα πρέπει να κάνετε commit, ώστε όλοι στο έργο να εκτελούν τις ίδιες εκδόσεις. Μια σημαία (flag) στη γραμμή εντολών υπερισχύει του αρχείου για τη συγκεκριμένη εκτέλεση.

Η έκδοση που δηλώνετε και η έκδοση που εκτελείται είναι διαφορετικά δεδομένα. Το zinnector dev --once εκκινεί τον χρόνο εκτέλεσης, εκτυπώνει αυτό που αναφέρει πραγματικά — έκδοση PHP, έκδοση WordPress, φορτωμένες επεκτάσεις — και σταματά. Το zinnector check --probe χρησιμοποιεί την ίδια μέτρηση όταν συγκρίνει το έργο σας με μια θούρα φιλοξενίας.

Τι εξυπηρετείται από το έργο σας

Ο χρόνος εκτέλεσης προσαρτά απευθείας τους καταλόγους wp-content/plugins, wp-content/themes και wp-content/mu-plugins του έργου σας, επομένως ένα αρχείο που αποθηκεύετε είναι ζωντανό στην επόμενη επαναφόρτωση. Οι κατάλογοι που υπάρχουν αλλά δεν περιέχουν πραγματικό περιεχόμενο δεν προσαρτώνται σκόπιμα: ένα κενό themes/ προσαρτημένο πάνω από τα θέματα του ίδιου του χρόνου εκτέλεσης θα άφηνε το WordPress χωρίς κανένα θέμα, το οποίο είναι ένα κενό 500 αντί για τον ιστότοπό σας. Γι' αυτό το σκαλωσιά διατηρεί κενούς καταλόγους με ένα .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 απορρίπτει τον εγκατεστημένο χρόνο εκτέλεσης και τον εγκαθιστά ξανά, κάτι που αποτελεί τη λύση για έναν χρόνο εκτέλεσης που εγκαταστάθηκε αλλά δεν εκκineίται.

Σε Node 26 ή νεότερη έκδοση

Το ίδιο το CLI εκτελείται σε οποιοδήποτε Node από 24 και πάνω. Ωστόσο, το εγγενές πρόσθετο του χρόνου εκτέλεσης αποστέλλει προμεταγλωττισμένα δυαδικά αρχεία μόνο για Node 24 και 25 (από τον Σεπτέμβριο του 2026). Αντί να μεταγλωττίσει οτιδήποτε — το οποίο στα Windows σημαίνει εγκατάσταση του Visual Studio — το Zinnector® φέρνει ένα Node 24 αποκλειστικά για τον χρόνο εκτέλεσης, περίπου 30 MB, επαληθευμένο έναντι των αθροισμάτων ελέγχου (checksums) που δημοσιεύει το nodejs.org, στην ίδια κρυφή μνήμη. Η προτροπή εγκατάστασης το αναφέρει όταν εφαρμόζεται. Τίποτα σχετικά με το δικό σας Node δεν αλλάζει.

Σχετικά

Εξακολουθείτε να έχετε απορίες;

Η υποστήριξη περιλαμβάνεται σε κάθε πρόγραμμα και απαντάμε στη γλώσσα σας.

Επικοινωνία με την υποστήριξη Όλα τα άρθρα