<div dir="ltr">Максим, спасибо за ответ.<div><br></div><div style>Если вы про определение переменной $script, то даже если от него отказаться и использовать штатную переменную <span style="color:rgb(0,0,0);font-family:monospace;font-size:medium">$fastcgi_script_name, то от этого то, к ему обращается nginx не меняется. Для меня остается вопросом, почему игнорируется / в пути, то есть почему nginx обращается к файлу:</span></div>
<div style><span style="font-family:arial,sans-serif;font-size:13.333333969116211px">/ff9cf78666f326226e5328cd01e82e</span><span style="font-family:arial,sans-serif;font-size:13.333333969116211px">53804d7a44.png/.php</span><span style="color:rgb(0,0,0);font-family:monospace;font-size:medium"><br>
</span></div><div style><span style="font-family:arial,sans-serif;font-size:13.333333969116211px">А не к :</span></div><div style><span style="font-family:arial,sans-serif;font-size:13.333333969116211px">/.php</span><span style="font-family:arial,sans-serif;font-size:13.333333969116211px"><br>
</span></div><div style><span style="font-family:arial,sans-serif;font-size:13.333333969116211px"><br></span></div><div style><span style="font-family:arial,sans-serif;font-size:13.333333969116211px">Что же до ничего не считает, то это абсолютно понятно и к этому вопросов нет.</span></div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">11 апреля 2013 г., 15:17 пользователь Maxim Dounin <span dir="ltr"><<a href="mailto:mdounin@mdounin.ru" target="_blank">mdounin@mdounin.ru</a>></span> написал:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello!<br>
<div><div class="h5"><br>
On Thu, Apr 11, 2013 at 02:11:18PM +0400, Anton Kiryushkin wrote:<br>
<br>
> Всем добрый день<br>
><br>
> Возможно это боян и только я не знаю как так получается. Но столкнулся с<br>
> интересной вещью.<br>
> Есть сайт, туда пользователи могут загружать картинки. И загружают. Но,<br>
> если вместо картинки, под видом картинки, они загрузят php-код, то,<br>
> казалось бы, и черт с ним. Сервер его не обработает. Но нашли ведь лаз<br>
> обращаться к файлу так:<br>
> ff9cf78666f326226e5328cd01e82e53804d7a44.png/.php<br>
><br>
> В location nginx прописано тоже вроде бы корректно:<br>
><br>
>        location ~ "^(.+\.php)($|/)" {<br>
>                 set $script $uri;<br>
>                 if ($uri ~ "^(.+\.php)($|/)") {<br>
>                         set $script $1;<br>
>                 }<br>
>                 if ($uri ~ "^(.+\.php)(/.+)") {<br>
>                         set $script $1;<br>
>                 }<br>
>                fastcgi_index  index.php;<br>
>                 fastcgi_split_path_info         ^(.+\.php)(.*)$;<br>
>                 fastcgi_param  PATH_INFO        $fastcgi_path_info;<br>
>                 fastcgi_pass   fpm-backend;<br>
>                 include fastcgi_params;<br>
>                 fastcgi_param SCRIPT_NAME $script;<br>
>                 fastcgi_param  SCRIPT_FILENAME<br>
>  $document_root$fastcgi_script_name;<br>
> }<br>
><br>
> То есть все, что оканчивается на .php. Соблюдается. Но ведь файла нет. Я<br>
> имею ввиду ".php". Почему nginx считает файлом<br>
> ff9cf78666f326226e5328cd01e82e53804d7a44.png/.php, ведь тут есть обычный<br>
> слэш?<br>
<br>
</div></div>Потому что nginx вообще ничего не считает, файла вообще может не<br>
быть, или он может быть на другой машине.  Если вы хотите, чтобы<br>
nginx проверял существование файла, то добавьте try_files - и будет<br>
проверять.<br>
<br>
В данном случае, однако, правильное решение - это не городить<br>
костыли в nginx'е, а исправить поведение php, чтобы он открывал<br>
ровно то, что сказали, а не пытался придумать правильное имя файла<br>
сам.  AFAIK, выключить cgi.fix_pathinfo - помогает.<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Maxim Dounin<br>
<a href="http://nginx.org/en/donation.html" target="_blank">http://nginx.org/en/donation.html</a><br>
<br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div>Best regards,</div>
Anton Kiryushkin<br> 
</div>