Ikọlu naa ṣee ṣe ni awọn atunto nginx ninu eyiti fifiranšẹ si PHP-FPM ṣe nipasẹ yiya sọtọ awọn apakan ti URL nipa lilo “fastcgi_split_path_info” ati asọye iyipada ayika PATH_INFO, ṣugbọn laisi iṣayẹwo akọkọ aye ti faili ni lilo “try_files $ fastcgi_script_name” itọsọna tabi “ti (!-f $) document_root$ fastcgi_script_name)”. Iṣoro naa tun jẹ
ipo ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^ (. +? \. php) (/.*) $;
fastcgi_param PATH_INFO $ fastcgi_path_info;
fastcgi_pass php: 9000;
}
O le tọpinpin ipinnu iṣoro naa ni awọn ohun elo pinpin lori awọn oju-iwe wọnyi:
try_files $ fastcgi_script_name = 404;
Iṣoro naa jẹ nitori aṣiṣe nigbati o ba n ṣe ifọwọyi awọn itọka ninu faili kan
Ti itọsọna fastcgi_split_path_info ba ṣalaye pipin ọna iwe afọwọkọ nipa lilo ikosile deede ti o ni imọlara laini tuntun (fun apẹẹrẹ, ọpọlọpọ awọn apẹẹrẹ daba lilo “^ (.+?\.php)(/.*)$”), lẹhinna ikọlu le rii daju pe ohun iye ofo ni a kọ si PATH_INFO oniyipada ayika. Ni idi eyi, siwaju sii pẹlu ipaniyan
Nipa bibere URL ti a ṣe ni ọna kan, ikọlu le ṣaṣeyọri iyipada ti itọka ọna_info si baiti akọkọ ti eto “_fcgi_data_seg”, ati kikọ odo si baiti yii yoo yorisi gbigbe ti “char * pos” itọka si agbegbe iranti ti o wa tẹlẹ. Nigbamii ti a pe ni FCGI_PUTENV yoo tun kọ data naa sinu iranti yii pẹlu iye ti olutayo le ṣakoso. Iranti pàtó kan tun tọju awọn iye ti awọn oniyipada FastCGI miiran, ati nipa kikọ data wọn, ikọlu le ṣẹda oniyipada PHP_VALUE kan ati ṣaṣeyọri ipaniyan koodu wọn.
orisun: opennet.ru