Praegune olukord: PHP2Shell. Kaks kriitilist PHP turvaauku (CVSS 9,2) lubavad kahjulikku koodi ilma sisselogimata. Paigad alates 21.10.2026.Mida nüüd teha →

PHP kohalik arendus: Docker, DDEV jt

PHP kohalikuks arenduseks on olemas sisseehitatud veebiserver, ametlikud Dockeri kujutised ja vahendid nagu DDEV. Oluline on, et kohapeal töötab sama PHP versioon nagu live'is.

Seis Lugemisaeg 4 minPHP teadmised

Lühidalt: PHP kohalikuks arenduseks on kolm levinud teed: sisseehitatud veebiserver (php -S) kiireteks katsetusteks, ametlikud PHP Dockeri kujutised järgi ehitatavate keskkondade jaoks ja vahendid nagu DDEV, mis loovad valmis projektikeskkondi WordPressi, TYPO3, Shopware või Laraveli jaoks. Otsustavam kui vahend on vastavus: kohapeal peaks töötama sama PHP versioon samade laiendustega nagu live'is. Turvalisuse jaoks loeb lõpuks siiski alati serveri käitusaeg.

Miks oma arenduskeskkond?

Muudatusi otse live-serveris teha on riskantne: iga trükiviga on kohe klientidele nähtav ja testifailid jäävad meelsasti maha. Kohalik keskkond eraldab katsetamise tööst. Samal ajal on see koht, kus uusi PHP versioone ja turvauuendusi esmalt testitakse.

Juhatuse ja IT-juhtide jaoks ei ole küsimus seetõttu selles, kas arenduskeskkond on olemas, vaid kas see vastab live-süsteemile. Kohalik keskkond PHP 8.4-ga, samal ajal kui live'is töötab veel 8.1, varjab probleeme, selle asemel et neid näidata. Sama kehtib andmebaasi versiooni, veebiserveri ja laiendite kohta nagu intl, gd või pdo_mysql: juba üks puuduv laiendus võib viia selleni, et viga tuleb välja alles live'is.

Võimalused ülevaatlikult

Võimalus Sobib Tugevused Piirid
Sisseehitatud server php -S lühikesed katsetused, väikesed skriptid ilma täiendava tarkvara paigaldamiseta ei asenda Nginxi ega Apache'i, ei sobi avalikesse võrkudesse
Ametlik Dockeri kujutis tiimid, järgi ehitatavad keskkonnad versioon määratav sildiga, lähedal konteinertööle seadistus ja mitme konteineri koostöö tuleb ise ehitada
DDEV CMS- ja raamistikuprojektid valmis projektitüübid, andmebaas ja veebiserver kaasas eeldab Dockerit, omad konventsioonid
Kohalikult paigaldatud PHP üksikarendaja kiire, otsene mitme projekti versioone on raske paralleelselt hoida

Sisseehitatud veebiserver

Alates PHP 5.4-st sisaldab käsurida väikest veebiserverit. See käivitub praeguses kataloogis või valikuga -t teises dokumendikataloogis:

php -S localhost:8000 -t public/

Valikuliselt annate edasi ruuteri skripti, mis käivitub iga päringu korral esimesena. Käsiraamat on liigitamisel üheselt selge: server peaks arendust toetama, ei ole täisväärtuslik veebiserver ega tohi olla kasutusel avalikus võrgus. Siduge see seetõttu aadressiga localhost, mitte 0.0.0.0, muidu on see teatud tingimustel ettevõtte või hotelli WLAN-is kättesaadav. Lähemalt käsurea kohta lehel PHP käsureal.

Docker: ametlikud PHP kujutised

Ametlikke kujutisi on mitmes variandis: cli käsurea jaoks, apache Apache'i ja mod_php-ga, fpm tööks Nginxi või muu puhverserveri taga, lisaks Alpine'i variandid väikeste kujutiste jaoks. Kiire start Apache'iga:

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

Kujutised sisaldavad mallid php.ini-development ja php.ini-production kataloogis $PHP_INI_DIR. Kohapeal on arendusmall mõistlik, sest see kuvab vead. Tootmise jaoks soovitab kujutise dokumentatsioon selgesõnaliselt tootmismalli. Laiendeid paigaldate kaasasolevate abiskriptidega docker-php-ext-configure, docker-php-ext-install ja docker-php-ext-enable. Kuidas sildid ja digestid töötavad, selgitab Ametlikud PHP Dockeri kujutised.

DDEV: valmis keskkonnad CMS-idele ja raamistikele

DDEV ehitub Dockerile ja seadistab projekti jaoks veebiserveri, PHP, andmebaasi ja abiteenused. Kiirstardijuhendid järgivad peaaegu alati sama mustrit:

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

Projektitüüpidena tunneb DDEV muu hulgas wordpress, typo3, shopware6, laravel, symfony, drupal11, magento2 ja üldist tüüpi php. PHP versiooni määrate failis .ddev/config.yaml; dokumentatsiooni järgi on võimalikud versioonid 5.6 kuni 8.5, vaikimisi 8.4:

# .ddev/config.yaml (väljavõte)
php_version: "8.3"
webserver_type: nginx-fpm   # alternatiivina apache-fpm

Nii vastab kohalik keskkond live'i versioonile, ka siis, kui see ei ole veel uusim.

Kohalik arendus, paigaseis ja PHP2Shell

Pärast PHP2Shelli on mitu platvormipakkujat juhtinud tähelepanu tüüpilisele mõttevigale. Vercel rõhutab bülletääni järgi, et kohaliku arenduskeskkonna, rakenduse koodi või pluginate uuendamisest ei piisa; otsustav on PHP käitusaeg, mis tegelikult sisu edastab. Kohapeal PHP 8.4.27 omamine ei kaitse serverit, kus on 8.4.26.

Vastupidi toob arenduskeskkond kaasa oma riskid, mis võivad jõuda tootmisse:

  1. Arendus-ini tootmises: display_errors on failis php.ini-development sisse lülitatud. Kui see fail jõuab serverisse, näevad külastajad teekondi ja veateateid. Vt Veateadete väljalülitamine tootmises.
  2. Unustatud testifailid: phpinfo()-failid, andmebaasi tõmmised või .env-failid ligipääsuandmetega ei kuulu väljaveeretusse.
  3. Avatud arendusserverid: php -S või konteinerid avaldatud portidega võrgus olevatel arvutitel.
  4. Vananenud kujutised: Kohalikke kujutisi ei uuendata ise; pärast PHP turvaväljalaset tuleb ka arenduskeskkond uuesti ehitada, et testid jookseksid parandatud versiooniga.
Näpunäide

Määrake PHP versioon ühes kohas, näiteks Dockerfile'is või failis .ddev/config.yaml, ja muutke seda uuenduste puhul koos serveri seadistusega.

Kuidas PHP SOS konkreetselt aitab?

Turvahoolduslepingu raames hoolitseme selle eest, et arendus ja töö sobivad kokku:

  • Võrdlus: Võrdleme arendus-, test- ja live-keskkonna PHP versiooni ja laiendeid.
  • Uuenduste kulg: Uued PHP väljalasked paigaldatakse esmalt testkeskkonda, seejärel live'i, kumbki taaskäivitusega.
  • Väljaveeretamise kontroll: Jälgime, et arendus-ini, testifailid ega ligipääsuandmed serverisse ei jõuaks.
  • Dokumentatsioon: Te teate igal ajal, milline versioon kus töötab.

Korduma kippuvad küsimused

Kas ma tohin PHP sisseehitatud veebiserverit avalikult kasutada?

Ei. PHP käsiraamat ütleb selgesõnaliselt, et käsuga php -S käivitatud server on mõeldud arenduseks ja seda ei tohi kasutada avalikus võrgus. Tööks kuuluvad PHP-FPM koos Nginxi või Apache'iga.

Mis on DDEV?

DDEV on Dockerile ehituv vahend, mis loob PHP projektidele valmis arenduskeskkondi. See tunneb projektitüüpe WordPressi, TYPO3, Shopware 6, Laraveli, Drupali ja muude süsteemide jaoks.

Kas piisab kohaliku PHP versiooni uuendamisest?

Ei. Turvaaukude nagu PHP2Shell vastu loeb PHP käitusaeg, mis tegelikult sisu edastab, ehk serveri oma. Kohalikul keskkonnal peaks siiski olema sama versioon, et testid oleksid tõenduslikud.

Millist php.ini ma kohapeal kasutan?

Kohapeal on mõistlik php.ini-development, sest see kuvab vead. Tootmises tuleb kasutada php.ini-production. Ametlikud Dockeri kujutised toovad mõlemad mallid kaasa.

Allikad

Kohene kontakt

Iga tund loeb. Kirjutage meile kohe.

Kirjeldage lühidalt süsteemi, PHP versiooni ja tähelepanekut. Võtame teiega ühendust, selgitame olukorra välja ja töötame kaugtööna, kuni intsident on lõpetatud ja dokumenteeritud.

Kohene abi