# Τοπική ανάπτυξη PHP: Docker, DDEV και άλλα

> Τοπική ανάπτυξη PHP με ενσωματωμένο server, Docker ή DDEV: δυνατά σημεία, όρια, παραδείγματα και πώς ανάπτυξη και παραγωγή παραμένουν ίδιες ως προς το επίπεδο ενημέρωσης.

Πηγή: https://phpsos.de/el/php/php-lokal-entwickeln/  
Ημερομηνία: 25/10/2026  
Πάροχος: PHP SOS, Επείγουσα βοήθεια PHP και ασφάλεια διακομιστών. Άμεση βοήθεια μέσω WhatsApp: https://wa.me/491736494914?text=%CE%93%CE%B5%CE%B9%CE%B1%20%CF%83%CE%B1%CF%82%2C%20PHP%20SOS%2C%20%CF%87%CF%81%CE%B5%CE%B9%CE%B1%CE%B6%CF%8C%CE%BC%CE%B1%CF%83%CF%84%CE%B5%20%CE%B2%CE%BF%CE%AE%CE%B8%CE%B5%CE%B9%CE%B1%20%CE%BC%CE%B5%20%CF%84%CE%BF%CE%BD%20%CE%B4%CE%B9%CE%B1%CE%BA%CE%BF%CE%BC%CE%B9%CF%83%CF%84%CE%AE%20PHP%20%CE%BC%CE%B1%CF%82.%20%CE%95%CF%84%CE%B1%CE%B9%CF%81%CE%B5%CE%AF%CE%B1%3A%20%E2%80%A6%20%CE%99%CF%83%CF%84%CF%8C%CF%84%CE%BF%CF%80%CE%BF%CF%82%3A%20%E2%80%A6

**Εν συντομία:** Για την τοπική ανάπτυξη PHP υπάρχουν τρεις συνηθισμένοι τρόποι: ο ενσωματωμένος διακομιστής ιστού (`php -S`) για γρήγορες δοκιμές, οι επίσημες εικόνες Docker της PHP για αναπαραγώγιμα περιβάλλοντα και εργαλεία όπως το DDEV, που δημιουργούν έτοιμα περιβάλλοντα έργου για WordPress, TYPO3, Shopware ή Laravel. Αποφασιστική σημασία έχει λιγότερο το εργαλείο και περισσότερο η αντιστοιχία: τοπικά πρέπει να εκτελείται η ίδια έκδοση PHP με τις ίδιες επεκτάσεις όπως στην παραγωγή. Για την ασφάλεια μετρά πάντα, τελικά, το περιβάλλον εκτέλεσης στον διακομιστή.

## Γιατί ένα δικό σας περιβάλλον ανάπτυξης;

Το να κάνετε αλλαγές απευθείας στον ζωντανό διακομιστή είναι επικίνδυνο: κάθε τυπογραφικό λάθος είναι αμέσως ορατό στους πελάτες και τα αρχεία δοκιμών μένουν εύκολα πίσω. Ένα τοπικό περιβάλλον διαχωρίζει τη δοκιμή από τη λειτουργία. Είναι ταυτόχρονα το μέρος όπου δοκιμάζονται πρώτα οι νέες εκδόσεις PHP και οι ενημερώσεις ασφαλείας.

Για τη διοίκηση και την ηγεσία πληροφορικής το ερώτημα δεν είναι επομένως αν υπάρχει περιβάλλον ανάπτυξης, αλλά αν αντιστοιχεί στο ζωντανό σύστημα. Ένα τοπικό περιβάλλον με PHP 8.4, ενώ στην παραγωγή εκτελείται ακόμη η 8.1, συγκαλύπτει προβλήματα αντί να τα δείχνει. Το ίδιο ισχύει για την έκδοση της βάσης δεδομένων, τον διακομιστή ιστού και επεκτάσεις όπως οι `intl`, `gd` ή `pdo_mysql`: ακόμη και μια επέκταση που λείπει μπορεί να οδηγήσει στο να γίνει αντιληπτό ένα σφάλμα μόνο στην παραγωγή.

## Οι επιλογές με μια ματιά

| Επιλογή | Κατάλληλη για | Δυνατά σημεία | Όρια |
|---|---|---|---|
| Ενσωματωμένος διακομιστής `php -S` | σύντομες δοκιμές, μικρά σενάρια | χωρίς εγκατάσταση άλλου λογισμικού | δεν αντικαθιστά Nginx ή Apache, όχι για δημόσια δίκτυα |
| Επίσημη εικόνα Docker | ομάδες, αναπαραγώγιμα περιβάλλοντα | έκδοση ορίζεται με tag, κοντά στη λειτουργία containers | τη διαμόρφωση και τη συνεργασία πολλών containers τις στήνετε μόνοι |
| DDEV | έργα CMS και frameworks | έτοιμοι τύποι έργων, περιλαμβάνονται βάση δεδομένων και διακομιστής ιστού | προϋποθέτει Docker, δικές του συμβάσεις |
| Τοπικά εγκατεστημένη PHP | μεμονωμένοι προγραμματιστές | γρήγορη, άμεση | οι εκδόσεις πολλών έργων είναι δύσκολο να συντηρούνται παράλληλα |

## Ο ενσωματωμένος διακομιστής ιστού

Από την PHP 5.4 η γραμμή εντολών περιέχει έναν μικρό διακομιστή ιστού. Ξεκινά στον τρέχοντα κατάλογο ή, με `-t`, σε άλλον κατάλογο εγγράφων:

```bash
php -S localhost:8000 -t public/
```

Προαιρετικά μεταβιβάζετε ένα σενάριο δρομολόγησης (router) που εκτελείται πρώτο σε κάθε αίτημα. Το εγχειρίδιο είναι σαφές στην κατάταξη: ο διακομιστής προορίζεται να υποστηρίζει την ανάπτυξη, δεν είναι πλήρης διακομιστής ιστού και δεν πρέπει να χρησιμοποιείται σε δημόσιο δίκτυο. Δεσμεύστε τον γι' αυτό στο `localhost`, όχι στο `0.0.0.0`, διαφορετικά μπορεί να είναι προσβάσιμος στο WLAN της εταιρείας ή του ξενοδοχείου. Περισσότερα για τη γραμμή εντολών στη σελίδα [PHP στη γραμμή εντολών](https://phpsos.de/el/php/php-cli/).

## Docker: επίσημες εικόνες PHP

Οι επίσημες εικόνες υπάρχουν σε πολλές παραλλαγές: `cli` για τη γραμμή εντολών, `apache` με Apache και mod_php, `fpm` για λειτουργία πίσω από Nginx ή άλλον proxy, καθώς και παραλλαγές Alpine για μικρές εικόνες. Μια γρήγορη εκκίνηση με Apache:

```bash
docker run --rm -p 8080:80 -v "$PWD":/var/www/html php:8.4-apache
```

Οι εικόνες περιέχουν τα πρότυπα `php.ini-development` και `php.ini-production` στον κατάλογο `$PHP_INI_DIR`. Τοπικά έχει νόημα το πρότυπο ανάπτυξης, επειδή εμφανίζει σφάλματα. Για την παραγωγή η τεκμηρίωση της εικόνας συνιστά ρητά το πρότυπο παραγωγής. Τις επεκτάσεις τις εγκαθιστάτε με τα συνοδευτικά βοηθητικά σενάρια `docker-php-ext-configure`, `docker-php-ext-install` και `docker-php-ext-enable`. Πώς λειτουργούν τα tags και τα digests, εξηγεί η σελίδα [Επίσημες εικόνες Docker της PHP](https://phpsos.de/el/blog/offizielle-php-docker-images/).

## DDEV: έτοιμα περιβάλλοντα για CMS και frameworks

Το DDEV βασίζεται στο Docker και στήνει για ένα έργο διακομιστή ιστού, PHP, βάση δεδομένων και βοηθητικές υπηρεσίες. Οι οδηγίες γρήγορης εκκίνησης ακολουθούν σχεδόν πάντα το ίδιο μοτίβο:

```bash
ddev config --project-type=wordpress --docroot=web
ddev start
ddev composer install
ddev launch
```

Ως τύπους έργων το DDEV γνωρίζει, μεταξύ άλλων, τους `wordpress`, `typo3`, `shopware6`, `laravel`, `symfony`, `drupal11`, `magento2` και τον γενικό τύπο `php`. Την έκδοση PHP την ορίζετε στο `.ddev/config.yaml`· σύμφωνα με την τεκμηρίωση είναι δυνατές εκδόσεις από την 5.6 έως την 8.5, προεπιλογή είναι η 8.4:

```yaml
# .ddev/config.yaml (απόσπασμα)
php_version: "8.3"
webserver_type: nginx-fpm   # εναλλακτικά apache-fpm
```

Έτσι το τοπικό περιβάλλον αντιστοιχεί στην ζωντανή έκδοση, ακόμη κι αν αυτή δεν είναι η νεότερη.

## Τοπική ανάπτυξη, επίπεδο ενημέρωσης και PHP2Shell

Μετά το PHP2Shell, αρκετοί πάροχοι πλατφορμών επεσήμαναν ένα τυπικό σφάλμα σκέψης. Η Vercel τονίζει σύμφωνα με το δελτίο της ότι δεν αρκεί η ενημέρωση του τοπικού περιβάλλοντος ανάπτυξης, του κώδικα της εφαρμογής ή των πρόσθετων· αποφασιστικό είναι το περιβάλλον εκτέλεσης PHP που πράγματι εξυπηρετεί. Το να έχετε τοπικά PHP 8.4.27 δεν προστατεύει τον διακομιστή με 8.4.26.

Αντίστροφα, το περιβάλλον ανάπτυξης φέρνει δικούς του κινδύνους που μπορούν να περάσουν στην παραγωγή:

1. **Ini ανάπτυξης στην παραγωγή:** το `display_errors` είναι ενεργό στο `php.ini-development`. Αν αυτό το αρχείο φτάσει στον διακομιστή, οι επισκέπτες βλέπουν διαδρομές και μηνύματα σφαλμάτων. Δείτε [Απενεργοποίηση της εμφάνισης σφαλμάτων στην παραγωγή](https://phpsos.de/el/blog/display-errors-produktion/).
2. **Ξεχασμένα αρχεία δοκιμών:** αρχεία `phpinfo()`, dumps βάσεων δεδομένων ή αρχεία `.env` με διαπιστευτήρια δεν ανήκουν στην ανάπτυξη προς παραγωγή.
3. **Ανοιχτοί διακομιστές ανάπτυξης:** `php -S` ή containers με δημοσιευμένες θύρες σε υπολογιστές του δικτύου.
4. **Παρωχημένες εικόνες:** Οι τοπικές εικόνες δεν ενημερώνονται από μόνες τους· μετά από μια έκδοση ασφαλείας της PHP πρέπει να ξαναχτίζεται και το περιβάλλον ανάπτυξης, ώστε οι δοκιμές να εκτελούνται με τη διορθωμένη έκδοση.

> **Συμβουλή:**
> Ορίστε την έκδοση PHP σε ένα σημείο, για παράδειγμα στο Dockerfile ή στο `.ddev/config.yaml`, και αλλάζετέ την στις ενημερώσεις μαζί με τη διαμόρφωση του διακομιστή.

## Πώς βοηθά συγκεκριμένα η PHP SOS;

Στη [σύμβαση συντήρησης ασφαλείας](https://phpsos.de/el/leistungen/security-wartungsvertrag/) φροντίζουμε ώστε η ανάπτυξη και η λειτουργία να ταιριάζουν:

- **Αντιπαραβολή:** Συγκρίνουμε την έκδοση PHP και τις επεκτάσεις των περιβαλλόντων ανάπτυξης, δοκιμών και παραγωγής.
- **Διαδικασία ενημέρωσης:** Οι νέες εκδόσεις PHP εγκαθίστανται πρώτα στο περιβάλλον δοκιμών, έπειτα στην παραγωγή, κάθε φορά με επανεκκίνηση.
- **Έλεγχος της ανάπτυξης προς παραγωγή:** Φροντίζουμε ώστε να μη φτάνουν στον διακομιστή ini ανάπτυξης, αρχεία δοκιμών ή διαπιστευτήρια.
- **Τεκμηρίωση:** Γνωρίζετε ανά πάσα στιγμή ποια έκδοση εκτελείται πού.


## Συχνές ερωτήσεις

**Επιτρέπεται να χρησιμοποιώ τον ενσωματωμένο διακομιστή ιστού της PHP δημόσια;**  
Όχι. Το εγχειρίδιο της PHP λέει ρητά ότι ο διακομιστής που ξεκινά με php -S προορίζεται για ανάπτυξη και δεν πρέπει να χρησιμοποιείται σε δημόσιο δίκτυο. Για τη λειτουργία ανήκουν το PHP-FPM με Nginx ή Apache.

**Τι είναι το DDEV;**  
Το DDEV είναι ένα εργαλείο που βασίζεται στο Docker και δημιουργεί έτοιμα περιβάλλοντα ανάπτυξης για έργα PHP. Γνωρίζει τύπους έργων για WordPress, TYPO3, Shopware 6, Laravel, Drupal και άλλα συστήματα.

**Αρκεί να ενημερώσω την τοπική έκδοση PHP;**  
Όχι. Απέναντι σε ευπάθειες όπως το PHP2Shell μετρά το περιβάλλον εκτέλεσης PHP που πράγματι εξυπηρετεί, δηλαδή αυτό στον διακομιστή. Το τοπικό περιβάλλον πρέπει όμως να έχει την ίδια έκδοση, ώστε οι δοκιμές να είναι ουσιαστικές.

**Ποιο php.ini χρησιμοποιώ τοπικά;**  
Τοπικά έχει νόημα το php.ini-development, επειδή εμφανίζει σφάλματα. Στην παραγωγή πρέπει να χρησιμοποιείται το php.ini-production. Οι επίσημες εικόνες Docker περιέχουν και τα δύο πρότυπα.

## Πηγές

- [Εγχειρίδιο PHP: Ενσωματωμένος διακομιστής ιστού](https://www.php.net/manual/en/features.commandline.webserver.php)
- [Docker Official Image: PHP](https://hub.docker.com/_/php)
- [DDEV](https://ddev.com/)
