Fil-qosor: SAPI tfisser Server Application Programming Interface, l-interface li permezz tagħha PHP titkellem mal-ambjent tagħha. SAPIs tipiċi huma fpm-fcgi (PHP-FPM), apache2handler (mod_php), cgi-fcgi (php-cgi), litespeed u cli għal-linja tal-kmand. L-SAPI tiddetermina kif jaslu t-talbiet, liema php.ini tapplika u liema proċessi jridu jerġgħu jinbdew wara aġġornament. Ma' PHP2Shell saħansitra l-klassifikazzjoni tar-riskju tiddependi minnha.
X'inhi SAPI?
PHP nnifisha hija programm li jesegwixxi kodiċi. Biex tkun tista' twassal paġni tal-web, teħtieġ konnessjoni ma' server tal-web, mal-linja tal-kmand jew ma' applikazzjoni oħra. Din il-konnessjoni hija l-SAPI. Taċċetta d-dejta tat-talba, tgħaddiha liz-Zend Engine u tirritorna l-output.
Wieħed jista' jimmaġina l-SAPI bħal plagg: il-magna tibqa' l-istess, imma skont il-plagg taqbel ma' Apache, ma' Nginx permezz ta' FastCGI, ma' LiteSpeed jew mat-terminal. Kull varjant għandha l-qawwiet tagħha, mogħdijiet tal-konfigurazzjoni proprji u nases proprji.
L-SAPI tiddeċiedi fuq kollox dwar tliet affarijiet li jgħoddu fil-ħajja ta' kuljum:
- Mudell tal-proċessi: PHP taħdem fis-server tal-web, bħala servizz proprju b'workers permanenti jew bħala proċess ta' ħajja qasira għal kull sejħa?
- Konfigurazzjoni: Liema php.ini tinqara, u fejn jistgħu jkunu settings addizzjonali, pereżempju f'
.htaccess, f'.user.inijew fil-pool tal-FPM? - Drittijiet u separazzjoni: Taħt liema utent jaħdem il-kodiċi, u jistgħu diversi websajts jinfirdu minn xulxin?
Fil-panels tal-hosting l-SAPIs jidhru b'ismijiet oħra. Plesk, pereżempju, jitkellem dwar handlers ta' PHP bħal „FPM application“, „FastCGI application“ jew „Apache module“. It-termini jindikaw l-istess modalitajiet tat-tħaddim li tiddeskrivi din il-paġna. Fil-każ ta' dubju jgħin il-fajl ta' verifika hawn taħt, li juri l-isem veru tal-SAPI.
Liema SAPIs ta' PHP hemm?
Il-manwal ta' PHP isemmi għal php_sapi_name() fost oħrajn dawn il-valuri ta' ritorn: apache, apache2handler, cgi (sa PHP 5.3), cgi-fcgi, cli, cli-server, embed, fpm-fcgi, litespeed u phpdbg. Il-lista espliċitament mhijiex kompleta.
| Isem tal-SAPI | Modalità tat-tħaddim | Użu tipiku | Mudell tal-proċessi |
|---|---|---|---|
fpm-fcgi |
PHP-FPM | Nginx, Apache b'proxy_fcgi, panels tal-hosting |
servizz proprju b'pools ta' workers |
apache2handler |
mod_php | servers Apache eqdem, immaġini sempliċi ta' Docker | PHP fil-proċess ta' Apache |
cgi-fcgi |
php-cgi | installazzjonijiet antiki, xi setups ta' Windows | proċess għal kull talba jew FastCGI |
litespeed |
LSAPI | server tal-web LiteSpeed, ħafna hosters kondiviżi | proċessi proprji ta' PHP |
cli |
linja tal-kmand | cronjobs, Composer, skripts ta' manutenzjoni | proċess wieħed għal kull sejħa |
cli-server |
server tal-web integrat | żvilupp lokali biss (php -S) |
server ta' żvilupp |
embed |
integrata | PHP f'programmi oħra | jiddependi mill-programm |
phpdbg |
debugger | tiftix tal-iżbalji | interattiv |
FrankenPHP huwa server tal-applikazzjonijiet modern li jintegra lil PHP direttament. Huwa wkoll affettwat minn PHP2Shell u għandu mogħdijiet tal-aġġornament proprji; dettalji taħt Ħarsien ta' FrankenPHP.
Kif tivverifikaw l-SAPI tas-server tagħkom
L-SAPI ta' websajt tgħarfuha biss permezz tas-server tal-web, mhux permezz tal-linja tal-kmand. Fajl żgħir ta' verifika huwa biżżejjed:
<?php
// sapi-check.php: neħħuh immedjatament wara li jintalab
header('Content-Type: text/plain');
echo PHP_SAPI, "\n", PHP_VERSION, "\n", php_ini_loaded_file(), "\n";
Fuq il-linja tal-kmand il-varjanti u s-servizzi installati jistgħu jinġabru għall-qari biss:
php -r 'echo PHP_SAPI, PHP_EOL;' # dejjem "cli"
ls /usr/sbin/php-fpm* 2>/dev/null # verżjonijiet tal-FPM installati
systemctl list-units --type=service | grep -i -E "php|lsws|apache2|httpd"
apachectl -M 2>/dev/null | grep -i php # mod_php imgħobbija?
Għaliex kull SAPI tista' jkollha php.ini proprja
Skont il-manwal ta' PHP, PHP l-ewwel tfittex fajl php-SAPI.ini, jiġifieri pereżempju php-cli.ini, u biss wara php.ini. Distribuzzjonijiet bħal Debian u Ubuntu jmorru aktar 'l hemm u joħolqu folders proprji għal kull SAPI, pereżempju /etc/php/8.3/fpm/ u /etc/php/8.3/cli/.
Anki ż-żmien tal-qari jiddiffer: Ma' moduli tas-server, skont il-manwal, PHP taqra l-konfigurazzjoni darba biss meta jinbeda s-server tal-web, ma' CGI u CLI ma' kull sejħa. Min ibiddel setting għalhekk irid jaf liema SAPI hija affettwata. Aktar dwar dan taħt Il-php.ini spjegata.
SAPI u sigurtà: x'wriet PHP2Shell
Skont ir-rapporti, PHP2Shell taffettwa PHP-FPM, Apache b'mod_php, php-cgi, FrankenPHP u LiteSpeed. It-tim ta' PHP jikklassifika r-riskju bħala l-ogħla ma' mod_php, għax hemmhekk intwera exploit qabel ma jibda jaħdem kodiċi tal-applikazzjoni. Ir-raġunijiet jinsabu taħt Għaliex mod_php iġorr l-ogħla riskju.
Għat-tħaddim, l-SAPI tfisser fuq kollox ħaġa waħda: tiddetermina x'jrid jerġa' jinbeda wara l-aġġornament.
- PHP-FPM: il-pools u l-workers kollha ta' kull verżjoni installata
- mod_php: is-servizz sħiħ ta' Apache, mhux biss reload
- php-cgi u setups FastCGI: il-proċessi kollha ta' PHP li jifdal
- LiteSpeed: il-proċessi ta' PHP tas-server tal-web skont l-istruzzjonijiet tal-fornitur
- CLI: ebda proċessi permanenti, imma aġġornaw il-pakkett ukoll, biex il-verifiki jaqblu
Fuq żmien medju jimmerita l-bidla minn mod_php. Il-manwal ta' PHP jirrakkomanda PHP-FPM b'mod_proxy_fcgi għal installazzjonijiet ġodda ta' Apache. Il-bażi tiddeskrivi PHP-FPM spjegat.
Kif jgħin PHP SOS konkretament?
- Niġbru l-SAPIs: Niddeterminaw għal kull server liema modalitajiet tat-tħaddim u liema verżjonijiet ta' PHP huma attivi tassew.
- Restart korrett: Permezz tas-Servizz ta' patch għal PHP naġġornaw kull SAPI u nipprovaw ir-restart tal-proċessi kollha.
- Nassenjaw il-konfigurazzjoni: Nuruk liema php.ini u liema settings tal-pool japplikaw għall-websajt tagħkom.
- Nippjanaw it-tranżizzjoni: Fejn jaħdem mod_php jew php-cgi, nippjanaw u nittestjaw il-bidla għal PHP-FPM.
Mistoqsijiet frekwenti
Kif insib liema SAPI tuża l-websajt tiegħi?
L-iktar b'mod affidabbli b'fajl ta' verifika mpoġġi għal żmien qasir li jagħti PHP_SAPI jew php_sapi_name(), mitlub permezz tas-server tal-web. Fuq il-linja tal-kmand dejjem tirċievu cli, u dan ma jgħid xejn dwar il-websajt. Wara neħħu l-fajl ta' verifika immedjatament.
Liema SAPI hija l-iktar sigura?
L-ebda waħda mhi sigura minnha nfisha. PHP-FPM madankollu toffri l-aktar għodod għas-separazzjoni: pools proprji, utenti u settings imsakkra għal kull websajt. Il-manwal ta' PHP jirrakkomanda espliċitament PHP-FPM minflok mod_php għal installazzjonijiet ġodda ta' Apache.
Il-verżjoni tal-linja tal-kmand hija affettwata minn PHP2Shell?
Ir-rapporti magħrufa jsemmu PHP-FPM, mod_php, php-cgi, FrankenPHP u LiteSpeed. Is-CLI ma tipproċessax talbiet mix-xibka. Madankollu normalment tiġi mill-istess sors tal-pakketti u għandha dejjem tiġi aġġornata wkoll, għall-inqas biex il-kmandi ta' verifika juru l-istat t-tajjeb.
Server jista' juża diversi SAPIs fl-istess ħin?
Iva, dan huwa saħansitra komuni. Kważi kull server għandu, minbarra s-SAPI tal-web, is-CLI għal cronjobs u manutenzjoni. Spiss jaħdmu wkoll diversi verżjonijiet ta' PHP-FPM b'mod parallel. Kull waħda minnhom trid tiġi aġġornata u mibdija mill-ġdid individwalment.