Situația actuală: PHP2Shell. Două vulnerabilități critice PHP (CVSS 9.2) permit cod malițios fără autentificare. Patchuri din 21.10.2026.Ce este de făcut acum →

Dezvoltarea PHP locală: Docker, DDEV și altele

Pentru dezvoltarea PHP locală există serverul web integrat, imaginile Docker oficiale și instrumente precum DDEV. Important este ca local să ruleze aceeași versiune PHP ca în producție.

Stadiu 5 min de cititCunoștințe PHP

Pe scurt: Pentru a dezvolta PHP local există trei căi uzuale: serverul web integrat (php -S) pentru încercări rapide, imaginile Docker PHP oficiale pentru medii reproductibile și instrumente precum DDEV, care creează medii de proiect gata făcute pentru WordPress, TYPO3, Shopware sau Laravel. Decisivă este mai puțin unealta și mai mult concordanța: local ar trebui să ruleze aceeași versiune PHP, cu aceleași extensii, ca în producție. Pentru securitate contează însă la urmă întotdeauna mediul de execuție de pe server.

De ce un mediu de dezvoltare propriu?

A face modificări direct pe serverul live este riscant: orice greșeală de tastare este imediat vizibilă clienților, iar fișierele de test rămân de bunăvoie pe loc. Un mediu local separă experimentul de exploatare. Este totodată locul în care versiunile noi de PHP și actualizările de securitate se testează mai întâi.

Pentru conducere și pentru responsabilii IT, întrebarea nu este deci dacă există un mediu de dezvoltare, ci dacă el corespunde sistemului live. Un mediu local cu PHP 8.4, în timp ce în producție rulează încă 8.1, ascunde problemele în loc să le arate. Același lucru este valabil pentru versiunea bazei de date, serverul web și extensii precum intl, gd sau pdo_mysql: chiar o singură extensie lipsă poate face ca o eroare să iasă la iveală abia în producție.

Opțiunile, pe scurt

Opțiune Potrivită pentru Puncte forte Limite
Serverul integrat php -S încercări scurte, scripturi mici fără instalarea altor programe nu înlocuiește Nginx sau Apache, nu pentru rețele publice
Imagine Docker oficială echipe, medii reproductibile versiune fixabilă prin tag, aproape de exploatarea în containere configurarea și conlucrarea mai multor containere trebuie construite singur
DDEV proiecte CMS și framework tipuri de proiect gata făcute, bază de date și server web incluse presupune Docker, convenții proprii
PHP instalat local dezvoltatori individuali rapid, direct versiunile mai multor proiecte sunt greu de menținut în paralel

Serverul web integrat

Din PHP 5.4, linia de comandă conține un mic server web. El pornește în directorul curent sau, cu -t, într-un alt director de documente:

php -S localhost:8000 -t public/

Opțional transmiteți un script router, care rulează primul la fiecare cerere. Manualul este neechivoc în încadrare: serverul trebuie să sprijine dezvoltarea, nu este un server web complet și nu trebuie folosit într-o rețea publică. Legați-l de aceea la localhost, nu la 0.0.0.0, altfel poate fi accesibil, în anumite condiții, în rețeaua Wi-Fi a firmei sau a hotelului. Mai multe despre linia de comandă la PHP în linia de comandă.

Docker: imaginile PHP oficiale

Imaginile oficiale există în mai multe variante: cli pentru linia de comandă, apache cu Apache și mod_php, fpm pentru exploatarea în spatele Nginx sau al altui proxy, plus variante Alpine pentru imagini mici. Un start rapid cu Apache:

docker run --rm -p 8080:80 -v "$PWD":/var/www/html php:8.4-apache

Imaginile conțin șabloanele php.ini-development și php.ini-production în directorul $PHP_INI_DIR. Local este potrivit șablonul de dezvoltare, deoarece afișează erorile. Pentru producție, documentația imaginii recomandă explicit șablonul de producție. Extensiile le instalați cu scripturile auxiliare livrate docker-php-ext-configure, docker-php-ext-install și docker-php-ext-enable. Cum funcționează tag-urile și digest-urile explică Imaginile Docker PHP oficiale.

DDEV: medii gata făcute pentru CMS și framework-uri

DDEV se construiește pe Docker și configurează pentru un proiect serverul web, PHP, baza de date și serviciile auxiliare. Ghidurile de pornire rapidă urmează aproape întotdeauna același tipar:

ddev config --project-type=wordpress --docroot=web
ddev start
ddev composer install
ddev launch

Ca tipuri de proiect, DDEV cunoaște, printre altele, wordpress, typo3, shopware6, laravel, symfony, drupal11, magento2 și tipul general php. Versiunea PHP o stabiliți în .ddev/config.yaml; potrivit documentației sunt posibile versiuni de la 5.6 la 8.5, iar valoarea implicită este 8.4:

# .ddev/config.yaml (extras)
php_version: "8.3"
webserver_type: nginx-fpm   # alternativ apache-fpm

Astfel, mediul local corespunde versiunii din producție, chiar dacă aceasta nu este încă cea mai nouă.

Dezvoltarea locală, starea de patch și PHP2Shell

După PHP2Shell, mai mulți furnizori de platforme au atras atenția asupra unei greșeli tipice de gândire. Vercel subliniază, potrivit buletinului, că nu ajunge o actualizare a mediului de dezvoltare local, a codului aplicației sau a plugin-urilor; decisiv este mediul de execuție PHP care livrează efectiv. A avea local PHP 8.4.27 nu protejează serverul cu 8.4.26.

În sens invers, mediul de dezvoltare aduce riscuri proprii, care pot migra în producție:

  1. Ini de dezvoltare în producție: display_errors este activat în php.ini-development. Dacă acest fișier ajunge pe server, vizitatorii văd căi și mesaje de eroare. A se vedea Dezactivarea afișării erorilor în producție.
  2. Fișiere de test uitate: fișierele phpinfo(), dump-urile de baze de date sau fișierele .env cu date de acces nu au ce căuta în deployment.
  3. Servere de dezvoltare deschise: php -S sau containere cu porturi publicate pe calculatoare din rețea.
  4. Imagini vechi: imaginile locale nu se actualizează de la sine; după o lansare de securitate PHP, și mediul de dezvoltare trebuie reconstruit, pentru ca testele să ruleze cu versiunea corectată.
Sfat

Stabiliți versiunea PHP într-un singur loc, de exemplu în Dockerfile sau în .ddev/config.yaml, și modificați-o la actualizări împreună cu configurația serverului.

Cum ajută PHP SOS concret?

În contractul de mentenanță de securitate ne asigurăm că dezvoltarea și exploatarea se potrivesc:

  • Compararea: Comparăm versiunea PHP și extensiile mediilor de dezvoltare, de test și de producție.
  • Fluxul de actualizare: Lansările PHP noi sunt instalate mai întâi în mediul de test, apoi în producție, de fiecare dată cu repornire.
  • Verificarea deployment-ului: Urmărim ca nicio ini de dezvoltare, niciun fișier de test și nicio dată de acces să nu ajungă pe server.
  • Documentația: Știți oricând ce versiune rulează unde.

Întrebări frecvente

Am voie să folosesc serverul web PHP integrat în mod public?

Nu. Manualul PHP spune explicit că serverul pornit cu php -S servește dezvoltării și nu trebuie folosit într-o rețea publică. Pentru exploatare sunt potrivite PHP-FPM cu Nginx sau Apache.

Ce este DDEV?

DDEV este un instrument construit pe Docker, care creează medii de dezvoltare gata făcute pentru proiecte PHP. Cunoaște tipuri de proiect pentru WordPress, TYPO3, Shopware 6, Laravel, Drupal și alte sisteme.

Este suficient să actualizez versiunea PHP locală?

Nu. Împotriva vulnerabilităților precum PHP2Shell contează mediul de execuție PHP care livrează efectiv, adică cel de pe server. Mediul local ar trebui însă să aibă aceeași versiune, pentru ca testele să fie relevante.

Ce php.ini folosesc local?

Local este potrivit php.ini-development, deoarece afișează erorile. În producție trebuie folosit php.ini-production. Imaginile Docker oficiale vin cu ambele șabloane.

Surse

Contact imediat

Fiecare oră contează. Scrieți-ne acum.

Descrieți pe scurt sistemul, versiunea PHP și ce ați observat. Ne vom face auziți, clarificăm situația și lucrăm la distanță până când incidentul este încheiat și documentat.

Ajutor imediat