Go achomair: Seasann SAPI do Server Application Programming Interface, an comhéadan trína labhraíonn PHP lena thimpeallacht. Is SAPInna tipiciúla iad fpm-fcgi (PHP-FPM), apache2handler (mod_php), cgi-fcgi (php-cgi), litespeed agus cli don líne ordaithe. Cinneann an SAPI conas a thagann iarratais, cén php.ini a bhfuil feidhm aige agus cé na próisis a chaithfear a atosú tar éis nuashonraithe. I gcás PHP2Shell, braitheann an t-aicmiú riosca air fiú.
Cad is SAPI ann?
Is clár é PHP féin a ritheann cód. Le leathanaigh ghréasáin a sheachadadh, teastaíonn nasc uaidh le freastalaí gréasáin, leis an líne ordaithe nó le feidhmchlár eile. Is é an SAPI an nasc sin. Glacann sé le sonraí iarratais, cuireann sé ar aghaidh chuig an Zend Engine iad agus seolann sé an t-aschur ar ais.
Is féidir smaoineamh ar an SAPI mar phlocóid: fanann an t-inneall mar an gcéanna, ach de réir an phlocóid oireann sé d'Apache, d'Nginx trí FastCGI, de LiteSpeed nó den teirminéal. Tá láidreachtaí, bealaí cumraíochta agus cásanna contúirteacha dá chuid féin ag gach leagan.
Cinneann an SAPI trí rud thar aon rud eile a bhfuil tábhacht leo sa ghnáthré laethúil:
- Múnla próisis: An ritheann PHP sa fhreastalaí gréasáin, mar sheirbhís ar leith le hoibrithe buana nó mar phróiseas gearrshaolach do gach glao?
- Cumraíocht: Cén php.ini a léitear, agus cá bhféadfaidh socruithe breise a bheith, mar shampla i
.htaccess, i.user.ininó sa linn FPM? - Cearta agus scaradh: Faoi cén úsáideoir a ritheann an cód, agus an féidir roinnt suíomhanna gréasáin a scaradh óna chéile?
I bpainéil óstála, bíonn SAPInna le feiceáil faoi ainmneacha eile. Labhraíonn Plesk, mar shampla, ar láimhseálaithe PHP ar nós “FPM application”, “FastCGI application” nó “Apache module”. Is iad na modhanna oibriúcháin céanna atá i gceist a ndéanann an leathanach seo cur síos orthu. Más amhras ort, cabhraíonn an comhad seiceála thíos, a thaispeánann ainm fíor an SAPI.
Cé na SAPInna PHP atá ann?
Luann lámhleabhar PHP na luachanna seo a thugann php_sapi_name() ar ais, i measc eile: apache, apache2handler, cgi (go PHP 5.3), cgi-fcgi, cli, cli-server, embed, fpm-fcgi, litespeed agus phpdbg. Tá sé sainráite nach liosta cuimsitheach é.
| Ainm SAPI | Mód oibriúcháin | Úsáid thipiciúil | Múnla próisis |
|---|---|---|---|
fpm-fcgi |
PHP-FPM | Nginx, Apache le proxy_fcgi, painéil óstála |
seirbhís ar leith le linnte oibrithe |
apache2handler |
mod_php | freastalaithe Apache níos sine, íomhánna Docker simplí | PHP i bpróiseas Apache |
cgi-fcgi |
php-cgi | seansuiteálacha, roinnt socruithe Windows | próiseas do gach iarratas nó FastCGI |
litespeed |
LSAPI | freastalaí gréasáin LiteSpeed, a lán soláthraithe óstála roinnte | próisis PHP dá gcuid féin |
cli |
líne ordaithe | cronjobs, Composer, scripteanna cothabhála | próiseas amháin do gach glao |
cli-server |
freastalaí gréasáin comhtháite | forbairt áitiúil amháin (php -S) |
freastalaí forbartha amháin |
embed |
leabaithe | PHP i gcláir eile | ag brath ar an gclár |
phpdbg |
dífhabhtóir | earráidí a lorg | idirghníomhach |
Is freastalaí feidhmchláir nua-aimseartha é FrankenPHP a leabaíonn PHP go díreach. Bíonn tionchar ag PHP2Shell air freisin agus tá bealaí nuashonraithe dá chuid féin aige; sonraí ag FrankenPHP a chosaint.
Conas SAPI do fhreastalaí a sheiceáil
Ní fhaigheann tú amach SAPI suímh gréasáin ach tríd an bhfreastalaí gréasáin, ní tríd an líne ordaithe. Is leor comhad beag seiceála:
<?php
// sapi-check.php: scrios láithreach tar éis an ghlao
header('Content-Type: text/plain');
echo PHP_SAPI, "\n", PHP_VERSION, "\n", php_ini_loaded_file(), "\n";
Ar an líne ordaithe is féidir na leaganacha agus na seirbhísí suiteáilte a thaifeadadh trí léamh amháin:
php -r 'echo PHP_SAPI, PHP_EOL;' # i gcónaí "cli"
ls /usr/sbin/php-fpm* 2>/dev/null # leaganacha FPM suiteáilte
systemctl list-units --type=service | grep -i -E "php|lsws|apache2|httpd"
apachectl -M 2>/dev/null | grep -i php # mod_php luchtaithe?
Cén fáth a bhféadfadh php.ini dá chuid féin a bheith ag gach SAPI
De réir lámhleabhar PHP, cuardaíonn PHP comhad php-SAPI.ini ar dtús, mar shampla php-cli.ini, agus ansin php.ini amháin. Téann dáiltí ar nós Debian agus Ubuntu níos faide agus cruthaíonn siad fillteáin dá gcuid féin do gach SAPI, mar shampla /etc/php/8.3/fpm/ agus /etc/php/8.3/cli/.
Tá difríocht san am freisin: le modúil freastalaí, léann PHP an chumraíocht, de réir an lámhleabhair, aon uair amháin nuair a thosaíonn an freastalaí gréasáin; le CGI agus CLI, le gach glao. Ní mór d'aon duine a athraíonn socrú, dá bhrí sin, a fhios a bheith aige cén SAPI atá i gceist. Tuilleadh ag php.ini mínithe.
SAPI agus slándáil: an méid a léirigh PHP2Shell
De réir na dtuarascálacha, bíonn tionchar ag PHP2Shell ar PHP-FPM, ar Apache le mod_php, ar php-cgi, ar FrankenPHP agus ar LiteSpeed. Measann foireann PHP gurb é an riosca is airde ná mod_php, mar gur léiríodh exploit ansin sula ritheann cód feidhmchláir. Tá na cúiseanna ag Cén fáth a bhfuil an riosca is airde ag mod_php.
Maidir leis an oibriú, is é an rud is tábhachtaí a dhéanann an SAPI ná go gcinneann sé cad a chaithfear a atosú tar éis an nuashonraithe.
- PHP-FPM: gach linn agus oibrí de gach leagan suiteáilte
- mod_php: an tseirbhís Apache iomlán, ní athlódáil amháin
- php-cgi agus socruithe FastCGI: gach próiseas PHP atá fágtha
- LiteSpeed: próisis PHP an fhreastalaí gréasáin de réir threoir an tsoláthraí
- CLI: níl aon phróisis bhuana ann, ach nuashonraigh an pacáiste freisin ionas go mbeidh seiceálacha ceart
Sa mheántéarma is fiú aistriú ó mod_php. Molann lámhleabhar PHP PHP-FPM le mod_proxy_fcgi do shuiteálacha nua Apache. Déanann PHP-FPM mínithe cur síos ar na bunghnéithe.
Conas a chabhraíonn PHP SOS go praiticiúil?
- SAPInna a thaifeadadh: Faighimid amach do gach freastalaí cé na modhanna oibriúcháin agus leaganacha PHP atá gníomhach i ndáiríre.
- Atosú ceart: Tríd an tseirbhís paistithe PHP nuashonraímid gach SAPI agus cruthaímid atosú gach próisis.
- An chumraíocht a leithroinnt: Taispeánaimid cé na socruithe php.ini agus linne atá i bhfeidhm do do shuíomh gréasáin.
- Aistriú a phleanáil: I gcás ina bhfuil mod_php nó php-cgi ag rith, pleanáilimid agus tástálaimid an t-aistriú go PHP-FPM.
Ceisteanna coitianta
Conas a fhaighim amach cén SAPI a úsáideann mo shuíomh gréasáin?
Is iontaofa an bealach is mó trí chomhad seiceála a chuirtear síos go sealadach a aschuireann PHP_SAPI nó php_sapi_name(), agus a ghlaoitear tríd an bhfreastalaí gréasáin. Ar an líne ordaithe gheobhaidh tú cli i gcónaí, rud nach insíonn aon ní faoin suíomh gréasáin. Ansin scrios an comhad seiceála láithreach.
Cé acu SAPI is sábháilte?
Níl ceann ar bith sábháilte as féin. Ach cuireann PHP-FPM na huirlisí is mó ar fáil le haghaidh scartha: linnte, úsáideoirí agus socruithe faoi ghlas do gach suíomh gréasáin. Molann lámhleabhar PHP go sainráite PHP-FPM seachas mod_php do shuiteálacha nua Apache.
An mbíonn tionchar ag PHP2Shell ar an leagan líne ordaithe de PHP?
Luann na tuarascálacha aitheanta PHP-FPM, mod_php, php-cgi, FrankenPHP agus LiteSpeed. Ní phróiseálann an CLI iarratais ón líonra. Ach de ghnáth tagann sé ón bhfoinse phacáiste chéanna agus ba cheart é a nuashonrú i gcónaí, fiú amháin ionas go dtaispeánann orduithe seiceála an staid cheart.
An féidir le freastalaí roinnt SAPInna a úsáid ag an am céanna?
Is féidir, agus is gnách é sin fiú. Ag beagnach gach freastalaí, tá an CLI do chronjobs agus do chothabháil taobh leis an SAPI gréasáin. Is minic roinnt leaganacha PHP-FPM ag rith comhthreomhar freisin. Ní mór gach ceann acu a nuashonrú agus a atosú ar leithligh.