An cás reatha: PHP2Shell. Ceadaíonn dhá leochaileacht chriticiúla PHP (CVSS 9.2) cód mailíseach gan logáil isteach. Paistí ar fáil ón 21 Deireadh Fómhair 2026.Cad atá le déanamh anois →

CGI agus FastCGI: na bunghnéithe

Tosaíonn CGI próiseas do gach iarratas, coinníonn FastCGI próisis beo. Cad a chiallaíonn sé do PHP, php-cgi agus PHP-FPM agus cé na socruithe a théann i bhfeidhm ar an tslándáil.

Staid Am léitheoireachta: 5 nóim.Eolas PHP

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:

  1. 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.
  2. cgi.fix_pathinfo (réamhshocrú 1, INI_SYSTEM): cinntíonn sé luachanna ceart PATH_INFO agus PATH_TRANSLATED. Ba cheart do scripteanna SCRIPT_FILENAME a úsáid in ionad PATH_TRANSLATED.
  3. 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 .htaccess a sheachbhóthar.
  4. fastcgi.impersonate (réamhshocrú 0, INI_SYSTEM): ábhartha do IIS faoi Windows amháin.
  5. user_ini.filename agus user_ini.cache_ttl (réamhshocrú .user.ini agus 300 soicind): rialaíonn siad an léann PHP comhaid .user.ini agus 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_clients a 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.group agus listen.mode.
Tábhachtach

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.

Foinsí

Teagmháil láithreach

Cuireann gach uair an chloig leis. Scríobh chugainn anois.

Déan cur síos gearr ar an gcóras, leagan PHP agus an rud a thug tú faoi deara. Cuirfimid scéala chugat, soiléireoimid an cás agus oibreoimid go cianda go dtí go mbeidh an teagmhas dúnta agus doiciméadaithe.

Cabhair láithreach