Go achomair: Is sean-chomhéadan é CGI (Common Gateway Interface) ina dtosaíonn an freastalaí gréasáin clár nua do gach iarratas, i gcás PHP an clár php-cgi. Is forbairt air é FastCGI: ritheann próisis PHP go buan agus glacann siad le go leor iarratas trí shoicéad. Is é PHP-FPM an chur i bhfeidhm FastCGI is tábhachtaí do PHP. Is iad na socruithe cgi.* agus an riail nach mór nasc FastCGI a bheith inrochtana go poiblí riamh na rudaí is tábhachtaí ó thaobh na slándála de.
Cad is CGI ann?
Is ceann de na modhanna is sine é CGI trína ngineann freastalaithe gréasáin ábhar dinimiciúil. Tagraíonn lámhleabhar PHP don socrú cgi.rfc2616_headers do RFC 3875, sonraíocht an Common Gateway Interface. Chomh maith leis sin, ba chláir CGI a bhí i dtús PHP: scríobh Rasmus Lerdorf na chéad “Personal Home Page Tools” in 1994 mar chomhaid dhénártha CGI i C.
An prionsabal: do gach iarratas tosaíonn an freastalaí gréasáin próiseas nua, aistríonn sé sonraí an iarratais trí athróga timpeallachta agus an ionchur caighdeánach agus léann sé an freagra ón aschur caighdeánach. Ansin críochnaíonn an próiseas. De réir lámhleabhar PHP, léann PHP a php.ini as an nua le gach glao le CGI agus CLI, le modúil freastalaí ag an tús amháin.
Fágann sé sin CGI láidir, mar go dtosaíonn gach iarratas le próiseas úr. Ach fágann sé mall é freisin: cosnaíonn tosú próisis, cumraíocht a luchtú agus eisínteachtaí a thúsú am le gach iarratas.
Cad is FastCGI ann?
Réitíonn FastCGI an fhadhb feidhmíochta trí phróisis a choinneáil beo. Nascann an freastalaí gréasáin trí shoicéad Unix nó calafort TCP le próiseas atá ag rith agus seolann sé an t-iarratas chuige sa phrótacal FastCGI. Próiseálann an próiseas é agus fanann sé leis an gcéad cheann eile.
| Gné | CGI | FastCGI le php-cgi | FastCGI le PHP-FPM |
|---|---|---|---|
| Próiseas do gach iarratas | tá | níl | níl |
| Ainm SAPI | cgi-fcgi |
cgi-fcgi |
fpm-fcgi |
| Linnte le húsáideoir dá gcuid féin | níl | níl | tá |
| Rialú próisis | freastalaí gréasáin | modúl freastalaí gréasáin, m.sh. mod_fcgid | príomhphróiseas dá chuid féin |
Léitear .user.ini |
tá | tá | tá |
De réir an lámhleabhair, is é PHP-FPM an príomhchur i bhfeidhm FastCGI de chuid PHP. Cuireann sé bainistiú próisis, linnte, leathanaigh stádais agus slowlog leis an bprótacal. Tá na mionsonraí ag PHP-FPM mínithe.
Na socruithe cgi i php.ini
Do oibriú CGI tá socruithe dá gcuid féin ag PHP. Tagann na luachanna agus na cur síos seo ó lámhleabhar PHP:
cgi.force_redirect(réamhshocrú 1,INI_SYSTEM): de réir an lámhleabhair, riachtanach chun PHP a oibriú go slán mar CGI faoin gcuid is mó de na freastalaithe gréasáin. Ná múch é ach “ar do riosca féin”; faoi IIS caithfidh sé a bheith as.cgi.fix_pathinfo(réamhshocrú 1,INI_SYSTEM): cinntíonn sé luachanna ceartPATH_INFOagusPATH_TRANSLATED. Ba cheart do scripteannaSCRIPT_FILENAMEa úsáid in ionadPATH_TRANSLATED.cgi.discard_path(réamhshocrú 0,INI_SYSTEM): ceadaíonn sé an comhad dénártha CGI a chur go sábháilte lasmuigh den eolaire gréasáin, gan cosaint.htaccessa sheachbhóthar.fastcgi.impersonate(réamhshocrú 0,INI_SYSTEM): ábhartha do IIS faoi Windows amháin.user_ini.filenameagususer_ini.cache_ttl(réamhshocrú.user.iniagus 300 soicind): rialaíonn siad an léann PHP comhaid.user.iniagus cé chomh minic.
I gcás Nginx, bíonn aistriú glan de chosán an script mar chuid de seo. Patrún bunúsach inléite, gan ráthaíocht do gach timpeallacht:
location ~ \.php$ {
try_files $uri =404; # ná tabhair ach comhaid atá ann do PHP
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Cuireann an líne try_files $uri =404; cosc ar iarratais ar chosáin .php nach bhfuil ann a chur ar aghaidh chuig PHP.
Cén fáth a bhfuil rochtain oscailte FastCGI contúirteach
Tugann lámhleabhar PHP rabhadh sainráite: tá cumraíocht an iarratais á rialú ag duine ar bith atá in ann nasc FastCGI le PHP a oscailt, mar shampla auto_prepend_file, agus is féidir leis cód ar bith a rith dá bharr. Is é an chúis go bhféadfaidh freastalaithe gréasáin socruithe PHP a sheoladh le paraiméadair FastCGI ar nós PHP_VALUE agus PHP_ADMIN_VALUE.
Leanann rialacha soiléire as sin:
- PHP-FPM nó php-cgi sa mhód FastCGI a cheangal trí shoicéad Unix amháin, má ritheann an freastalaí gréasáin ar an óstach céanna.
- Le TCP,
listen.allowed_clientsa leagan síos agus an calafort a bhlocáil sa bhalla dóiteáin; nótaí ag an alt Balla dóiteáin do fhreastalaithe gréasáin. - Cearta soicéid a choinneáil go docht le
listen.owner,listen.groupaguslisten.mode.
Seiceáil le ss -lntp | grep -i php an bhfuil próiseas PHP ag éisteacht ar sheoladh TCP. Is cás práinneach é ceangal le 0.0.0.0 nó le seoladh poiblí.
CGI, FastCGI agus PHP2Shell
Bíonn tionchar ag PHP2Shell ar php-cgi agus ar PHP-FPM araon. Don dá cheann: nuashonrú go 8.5.12, 8.4.27, 8.3.36 nó 8.2.35 nó backport deimhnithe, ansin gach próiseas PHP atá ag rith a chríochnú agus a atosú. I socruithe FastCGI le php-cgi, is minic a leanann próisis ar aghaidh ag rith gan aird, mar nach bhfuil aon seirbhís ar leith á mbainistiú. Tá an chaoi chun an seanchóras seo a aimsiú agus a chur ar leataobh ag php-cgi: seanchóras le riosca. I Plesk tá ainmneacha eile ar na leaganacha; cabhraíonn Plesk: láimhseálaithe PHP a thuiscint.
Conas a chabhraíonn PHP SOS go praiticiúil?
- Láimhseálaithe a thaifeadadh: Faighimid amach an ritheann do shuíomhanna gréasáin trí CGI, FastCGI le php-cgi nó PHP-FPM.
- Rochtain a dhúnadh: Seiceálaimid soicéid, calafoirt agus rialacha balla dóiteáin ionas nach bhfuil aon rochtain FastCGI inrochtana ón taobh amuigh.
- Paistiú agus glanadh: Nuashonraímid PHP agus críochnaímid gach seanphróiseas, cásanna tréigthe php-cgi san áireamh.
- Cur ar leataobh: Mar chuid de chruatú freastalaí cuirimid PHP-FPM le linnte dá gcuid féin in ionad seanchórais CGI.
Ceisteanna coitianta
An é FastCGI an rud céanna le PHP-FPM?
Ní hé. Is prótacal é FastCGI trína labhraíonn freastalaí gréasáin le próiseas feidhmchláir. Is clár é PHP-FPM a chuireann an prótacal seo i bhfeidhm do PHP agus a bhainistíonn na próisis. Is féidir le php-cgi FastCGI a labhairt freisin, ach ní thairgeann sé linnte.
Cén fáth a measfar CGI glan a bheith as dáta?
Le CGI tosaíonn an freastalaí gréasáin próiseas nua do gach iarratas, agus léann PHP a chumraíocht gach uair. Cosnaíonn sé sin am agus acmhainní. Coinníonn FastCGI agus PHP-FPM próisis réidh go buan agus dá bhrí sin tá siad i bhfad níos éifeachtaí.
Cad is .user.ini ann?
Is comhad beag cumraíochta é .user.ini in eolaire gréasáin. De réir lámhleabhar PHP, ní léann ach na SAPInna CGI agus FastCGI é, mar sin PHP-FPM freisin. Ní fhéadfaidh sé ach socruithe a bheith ann leis na modhanna INI_PERDIR, INI_USER nó INI_ALL.
Conas a aithním an bhfuil php-cgi ag rith ar mo fhreastalaí?
Cuardaigh le horduithe léitheoireachta ar nós ps nó pgrep próisis darb ainm php-cgi agus féach i gcumraíocht an fhreastalaí gréasáin ar iontrálacha ar nós mod_fcgid, Action nó ScriptAlias le php-cgi. I bpainéil óstála, is minic CGI nó feidhmchlár FastCGI an t-ainm ar an mód oibriúcháin.