Fil-qosor: Biex PHP jiġi żviluppat lokalment hemm tliet modi komuni: is-server tal-web integrat (php -S) għal provi mgħaġġla, l-immaġini uffiċjali ta' PHP għal Docker għal ambjenti li jistgħu jerġgħu jinbnew, u għodod bħal DDEV, li joħolqu ambjenti lesti tal-proġett għal WordPress, TYPO3, Shopware jew Laravel. Deċiżiv huwa anqas l-għodda milli l-qbil: lokalment għandha taħdem l-istess verżjoni ta' PHP bl-istess estensjonijiet bħal live. Għas-sigurtà, madankollu, fl-aħħar dejjem jgħodd ir-runtime fuq is-server.
Għaliex ambjent proprju ta' żvilupp?
Li ssir bidla direttament fuq is-server live huwa riskjuż: kull żball tat-tipjar huwa viżibbli minnufih għall-klijenti, u fajls tat-test spiss jibqgħu hemm. Ambjent lokali jifred il-prova mit-tħaddim. Huwa fl-istess ħin il-post fejn verżjonijiet ġodda ta' PHP u aġġornamenti tas-sigurtà jiġu ttestjati l-ewwel.
Għat-tmexxija u għall-kap tal-IT, il-mistoqsija għalhekk mhijiex jekk hemmx ambjent ta' żvilupp, imma jekk jikkorrispondix mas-sistema live. Ambjent lokali b'PHP 8.4, filwaqt li live għadu jaħdem 8.1, jgħatti l-problemi minflok juriom. Il-mod hu l-istess għall-verżjoni tad-database, għas-server tal-web u għal estensjonijiet bħal intl, gd jew pdo_mysql: diġà estensjoni nieqsa tista' twassal biex żball jidher biss live.
L-għażliet f'ħarsa
| Għażla | Adattata għal | Saħħiet | Limiti |
|---|---|---|---|
Server integrat php -S |
provi qosra, skripts żgħar | mingħajr installazzjoni ta' softwer ieħor | mhux sostitut għal Nginx jew Apache, mhux għal networks pubbliċi |
| Immaġni uffiċjali ta' Docker | timijiet, ambjenti li jistgħu jerġgħu jinbnew | verżjoni stabbilita b'tag, qrib it-tħaddim f'containers | konfigurazzjoni u interazzjoni ta' diversi containers jinbnew waħdek |
| DDEV | proġetti ta' CMS u frameworks | tipi ta' proġetti lesti, database u server tal-web inklużi | jeħtieġ Docker, konvenzjonijiet proprji |
| PHP installat lokalment | żviluppatur individwali | veloċi, dirett | verżjonijiet ta' diversi proġetti diffiċli biex jinżammu b'mod parallel |
Is-server tal-web integrat
Minn PHP 5.4 il-linja tal-kmand fiha server żgħir tal-web. Jibda fid-direttorju kurrenti jew b'-t f'direttorju ieħor tad-dokumenti:
php -S localhost:8000 -t public/
Fakultattivament tgħaddu skript router li jaħdem l-ewwel ma' kull talba. Il-manwal huwa ċar fil-klassifikazzjoni: is-server għandu jappoġġa l-iżvilupp, mhuwiex server tal-web sħiħ u m'għandux jintuża f'network pubbliku. Torbtuh għalhekk ma' localhost, mhux ma' 0.0.0.0, inkella jista' jkun aċċessibbli fil-WLAN tal-kumpanija jew tal-lukanda. Aktar dwar il-linja tal-kmand taħt PHP fil-linja tal-kmand.
Docker: immaġini uffiċjali ta' PHP
L-immaġini uffiċjali jeżistu f'diversi varjanti: cli għal-linja tal-kmand, apache b'Apache u mod_php, fpm għat-tħaddim wara Nginx jew proxy ieħor, flimkien ma' varjanti Alpine għal immaġini żgħar. Bidu mgħaġġel b'Apache:
docker run --rm -p 8080:80 -v "$PWD":/var/www/html php:8.4-apache
L-immaġini fihom il-mudelli php.ini-development u php.ini-production fid-direttorju $PHP_INI_DIR. Lokalment il-mudell tal-iżvilupp għandu sens, għax juri l-iżbalji. Għall-produzzjoni d-dokumentazzjoni tal-immaġni tirrakkomanda espliċitament il-mudell tal-produzzjoni. L-estensjonijiet tinstallawhom bl-iskripts ta' għajnuna mogħtija docker-php-ext-configure, docker-php-ext-install u docker-php-ext-enable. Kif jaħdmu t-tags u d-digests tispjegah Immaġini uffiċjali ta' PHP għal Docker.
DDEV: ambjenti lesti għal CMS u frameworks
DDEV jibni fuq Docker u jwaqqaf għal proġett server tal-web, PHP, database u servizzi ta' għajnuna. Il-gwidi ta' bidu mgħaġġel kważi dejjem isegwu l-istess mudell:
ddev config --project-type=wordpress --docroot=web
ddev start
ddev composer install
ddev launch
Bħala tipi ta' proġetti DDEV jaf, fost oħrajn, wordpress, typo3, shopware6, laravel, symfony, drupal11, magento2 u t-tip ġenerali php. Il-verżjoni ta' PHP tistabbilixxuha f'.ddev/config.yaml; skont id-dokumentazzjoni huma possibbli verżjonijiet minn 5.6 sa 8.5, l-istandard huwa 8.4:
# .ddev/config.yaml (silta)
php_version: "8.3"
webserver_type: nginx-fpm # alternattiva: apache-fpm
B'hekk l-ambjent lokali jikkorrispondi mal-verżjoni live, anki jekk din għadha mhix l-aktar riċenti.
Żvilupp lokali, stat tal-patches u PHP2Shell
Wara PHP2Shell diversi fornituri tal-pjattaformi indikaw żball tipiku tal-ħsieb. Vercel jenfasizza, skont il-bulletin, li ma jaqbilx aġġornament tal-ambjent lokali ta' żvilupp, tal-kodiċi tal-applikazzjoni jew tal-plugins; deċiżiv huwa r-runtime ta' PHP li verament iservi. Li jkollok lokalment PHP 8.4.27 ma jipproteġix server b'8.4.26.
Bil-maqlub, l-ambjent ta' żvilupp iġib miegħu riskji proprji li jistgħu jgħaddu fil-produzzjoni:
- Ini ta' żvilupp fil-produzzjoni:
display_errorshuwa mixgħul f'php.ini-development. Jekk dan il-fajl jasal fuq is-server, il-viżitaturi jaraw mogħdijiet u messaġġi ta' żball. Ara Itfi l-wiri tal-iżbalji fil-produzzjoni. - Fajls tat-test minsija: fajls
phpinfo(), dumps tad-database jew fajls.envb'data ta' aċċess ma jappartjenux fid-deployment. - Servers tal-iżvilupp miftuħa:
php -Sjew containers b'portijiet ippubblikati fuq kompjuters fin-network. - Immaġini skaduti: L-immaġini lokali ma jiġux aġġornati waħedhom; wara rilaxx tas-sigurtà ta' PHP l-ambjent tal-iżvilupp għandu jinbena mill-ġdid ukoll, biex it-testijiet jaħdmu bil-verżjoni korretta.
Stabbilixxu l-verżjoni ta' PHP f'post wieħed, pereżempju fid-Dockerfile jew f'.ddev/config.yaml, u biddluha fl-aġġornamenti flimkien mal-konfigurazzjoni tas-server.
Kif jgħin PHP SOS konkretament?
Fil-kuntratt ta' manutenzjoni tas-sigurtà niżguraw li l-iżvilupp u t-tħaddim jaqblu flimkien:
- Tqabbil: Inqabblu l-verżjoni ta' PHP u l-estensjonijiet tal-ambjenti ta' żvilupp, test u live.
- Fluss tal-aġġornamenti: Rilaxxi ġodda ta' PHP jiġu applikati l-ewwel fl-ambjent tat-test, imbagħad live, kull darba b'restart.
- Verifika tad-deployment: Nagħtu kas li l-ebda ini ta' żvilupp, fajls tat-test jew data ta' aċċess ma jaslu fuq is-server.
- Dokumentazzjoni: Tafu f'kull ħin liema verżjoni taħdem fejn.
Mistoqsijiet frekwenti
Nista' nuża s-server tal-web integrat ta' PHP pubblikament?
Le. Il-manwal ta' PHP jgħid espliċitament li s-server mibdi b'php -S jservi għall-iżvilupp u m'għandux jintuża f'network pubbliku. Għat-tħaddim jappartjenu PHP-FPM ma' Nginx jew Apache.
X'inhu DDEV?
DDEV hija għodda mibnija fuq Docker li toħloq ambjenti lesti ta' żvilupp għal proġetti PHP. Taf tipi ta' proġetti għal WordPress, TYPO3, Shopware 6, Laravel, Drupal u sistemi oħra.
Huwa biżżejjed li naġġornaw il-verżjoni lokali ta' PHP?
Le. Kontra vulnerabbiltajiet bħal PHP2Shell jgħodd ir-runtime ta' PHP li verament iservi, jiġifieri dak fuq is-server. L-ambjent lokali madankollu għandu jkollu l-istess verżjoni, biex it-testijiet ikunu sinifikanti.
Liema php.ini nuża lokalment?
Lokalment php.ini-development għandu sens, għax juri l-iżbalji. Fil-produzzjoni għandu jintuża php.ini-production. L-immaġini uffiċjali ta' Docker jiġu bit-tnejn bħala mudelli.