Загрузка файлов на nginx

L
На сайте с 19.09.2011
Offline
17
3266

На NGINX установлена cms обоев, при попытке загрузить на сервер файл, после нажатия на кнопку — ничего не происходит, процесс тупо зависает, ошибка:

POST localhost/add/ 500 (Internal Server Error)

В настройках прописал client_max_body_size 20m; не помогло.

После нажатия на кнопку, должен выполняться js, который отвечает за upload.

На апаче все работает. В чем может быть проблема?

landan добавил 16.11.2011 в 14:09

В логе только server: localhost, request: "POST /add/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost", referrer: "http://localhost/add/"

landan добавил 16.11.2011 в 14:36

если попытаться открыть сам скрипт add.php в браузере, то в логе появляется ошибка:

*1 FastCGI sent in stderr: "PHP Parse error: syntax error, unexpected T_STRING in C:\nginx\html\add.php on line 242" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET /add.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost"

242 строка:

$core->content="<div class='realworning'><table><tr><td><img src='/wallpapers/min_".$core->very_similar_image($core->root.'/'.$path_min).".jpg'></td><td style='vertical-align:top;padding-left:15px;text-align:justify;'><span style='font-size:14px;line-height:14px;'>←</span> чтобы не допустить дублирование изображений мы выбрали самое похожее изображение из коллекции сайта. Если это и ваше изображения совпадают — отмените загрзку изображения, нажав кнопку «не загружать» и загружаемое изображение удалится как ненужное. Загружено изображение размером <b>".$realw."х".$realh."</b> px.<div><form action='' enctype='multipart/form-data' method='post' class='addform' id='abort'><input type='hidden' name='abort' value='1'/><a style='margin-top:14px;' href='javascript:L.confirm(\"Добавление будет прервано, а если вы загружаете изображение из песочницы,<br/>то оно будет удалено навсегда! Вы уверены что это можно сделать?\",function(){document.forms.abort.submit();});void(0)' class='sendcomm'>Не загружать!</a><input value='' style='display: none;' type='submit'></form></div></td></table></div></div><div class=content><script src='/js/jquery.min.js'></script><script src='/js/upload.js?$timestamp'></script><script src='/js/jquery.Jcrop.min.js'></script><script src='/js/jquery.autocomplete.js'></script><link rel='stylesheet' href='/css/jquery.Jcrop.css' type='text/css' /><h2><input type='checkbox' id='use_min' disabled='disabled' checked='checked'/><label for='use_min'> Маленькое превью</label></h2><img src='/$path_min?$timestamp' id='preview_min' /><script>upload.createCrop('min',$realw,$realh,$minw,$minh,".$core->mpw.",".$core->mph.");</script><br/><h2><input type='checkbox' id='use_big' disabled='disabled' checked='checked'/><label for='use_big'> Большое превью</label></h2><img src='/$path_min?$timestamp' id='preview_big' /><script>upload.createCrop('big',$realw,$realh,$minw,$minh,".$core->bpw.",".$core->bph.");</script>$sizeList</div><div class='content'><form id='save' action='/add/' enctype='multipart/form-data' method='post'><input type='hidden' name='save'/><table class='uploadTable'>".($sandbox_name?"<tr><td></td><td>$sandbox_name</td></tr>":"")."<tr><td class='lefttd'><label for='name'>Название:<label></td><td><div class='inf'>допускаются кавычки</div><input id='name' type='text' class='uploadText' name='name' /></td></tr><tr><td class='lefttd'><label for='tags'>Теги:<label></td><td><div class='inf'>регистр не учитывается, писать через запятую, запятую в конце можно оставить</div><input id='tags' type='text' class='uploadText' name='tags' /></td></tr>
A
На сайте с 29.12.2007
Offline
68
#1

Строка явно не вся, т.к. начинается с php, а заканчивается html.

500-я ошибка - внутренняя ошибка, скорее всего ошибка в коде.

L
На сайте с 19.09.2011
Offline
17
#2

// формируем страничку с формой выбора размеров итд
$sizeList='';
$sizeInfo=$core->query("SELECT * FROM size ORDER BY w desc,h desc");
while($row=mysql_fetch_assoc($sizeInfo)){
if($row['w']<=$realw&&$row['h']<=$realh){
$sizeList.="<br/><h2><input type='checkbox' id='use_$row[id]' checked='checked'/><label for='use_$row[id]'> $row[w]х$row[h] ($row[name])</label></h2><img src='/$path_min?$timestamp' id='preview_$row[id]' /><script>upload.createCrop('$row[id]',$realw,$realh,$minw,$minh,$row[w],$row[h]);</script>";
}
}
$catList='';
$catInfo=$core->query("SELECT * FROM categories ORDER BY category");
while($row=mysql_fetch_assoc($catInfo)){
$catList.= "<option value='$row[id]'>$row[category]</option>";
}
$alltags=array();
$gettags=$core->query("SELECT tag FROM tags ORDER BY tag");
while($row=mysql_fetch_assoc($gettags)){$alltags[]=$row['tag'];}
$alltags="['".implode("','",$alltags)."']";
$core->page_title=$core->page_name='Управление размерами обоев';
$core->content="<div class='realworning'><table><tr><td><img src='/wallpapers/min_".$core->very_similar_image($core->root.'/'.$path_min).".jpg'></td><td style='vertical-align:top;padding-left:15px;text-align:justify;'><span style='font-size:14px;line-height:14px;'>←</span> чтобы не допустить дублирование изображений мы выбрали самое похожее изображение из коллекции сайта. Если это и ваше изображения совпадают — отмените загрзку изображения, нажав кнопку «не загружать» и загружаемое изображение удалится как ненужное. Загружено изображение размером <b>".$realw."х".$realh."</b> px.<div><form action='' enctype='multipart/form-data' method='post' class='addform' id='abort'><input type='hidden' name='abort' value='1'/><a style='margin-top:14px;' href='javascript:L.confirm(\"Добавление будет прервано, а если вы загружаете изображение из песочницы,<br/>то оно будет удалено навсегда! Вы уверены что это можно сделать?\",function(){document.forms.abort.submit();});void(0)' class='sendcomm'>Не загружать!</a><input value='' style='display: none;' type='submit'></form></div></td></table></div></div><div class=content><script src='/js/jquery.min.js'></script><script src='/js/upload.js?$timestamp'></script><script src='/js/jquery.Jcrop.min.js'></script><script src='/js/jquery.autocomplete.js'></script><link rel='stylesheet' href='/css/jquery.Jcrop.css' type='text/css' /><h2><input type='checkbox' id='use_min' disabled='disabled' checked='checked'/><label for='use_min'> Маленькое превью</label></h2><img src='/$path_min?$timestamp' id='preview_min' /><script>upload.createCrop('min',$realw,$realh,$minw,$minh,".$core->mpw.",".$core->mph.");</script><br/><h2><input type='checkbox' id='use_big' disabled='disabled' checked='checked'/><label for='use_big'> Большое превью</label></h2><img src='/$path_min?$timestamp' id='preview_big' /><script>upload.createCrop('big',$realw,$realh,$minw,$minh,".$core->bpw.",".$core->bph.");</script>$sizeList</div><div class='content'><form id='save' action='/add/' enctype='multipart/form-data' method='post'><input type='hidden' name='save'/><table class='uploadTable'>".($sandbox_name?"<tr><td></td><td>$sandbox_name</td></tr>":"")."<tr><td class='lefttd'><label for='name'>Название:<label></td><td><div class='inf'>допускаются кавычки</div><input id='name' type='text' class='uploadText' name='name' /></td></tr><tr><td class='lefttd'><label for='tags'>Теги:<label></td><td><div class='inf'>регистр не учитывается, писать через запятую, запятую в конце можно оставить</div><input id='tags' type='text' class='uploadText' name='tags' /></td></tr>
"./* описания пишут только админы */($core->user_group==3?"
<tr><td class='lefttd'><label for='description'>Описание:<label></td><td><div class='inf'>возможен html</div><textarea id='description' class='uploadArea' name='description' ></textarea></td></tr>
":"")."
<tr><td class='lefttd'><label for='categories'>Категории:<label></td><td><div class='inf'>чтобы выбрать несколько зажмите <b>ctrl</b></div><select multiple id='categories' name='categories[]' size='41'>$catList</select></td></tr><tr><td class='lefttd'></td><td><a style='margin-top:14px;' href='javascript:upload.save();void(0);' class='sendcomm'>Ок</a></td></tr></table><script>$('#tags').autocomplete($alltags,{minChars: 1,multiple: true,autoFill: true,multipleSeparator: ', ',scroll: true,scrollHeight: 200,width: 458});</script>";
}else{
$core->content=$form;
}
A
На сайте с 29.12.2007
Offline
68
#3

Эм... Сорри, но такой "код" я разбирать не буду...

nikhotin
На сайте с 24.05.2007
Offline
74
#4

А какой на самом деле размер файла? и разрешение в рх?

nikhotin добавил 16.11.2011 в 19:16

Еще в тему:

Скорее всего на хостинге у вас библиотека GD.

Она очень требовательна к ресурсам. Так, например (могу ошибиться но не на много), при ограничении на сервере memory_limit = 64M, GD успешно создает эскизы для фото размером не более 6 МП (3008х2000 пикселей).

А на виртуальном хостинге обычно memory_limit = 32М и менее.

Ничто не пугает нас страшнее всего,как одинокая маленькая девочка в белом платьице холодной осенней ночью на аллее рядом с кладбищем...
D
На сайте с 20.07.2011
Offline
38
#5

landan, там косяк в коде (в той самой строке):

'>".($sandbox_name?"<tr><td></td><td>$sandbox_name</td></tr>":"")."<tr

Что он делает, или что хотел спрограммировать кодер не ясно, без уяснения. Но ошибка здесь.

L
На сайте с 19.09.2011
Offline
17
#6

nikhotin, это все на локальной машине

dblokhin, да, error_reporting мне тоже это выдает, но что там исправить, и почему на апаче проблем нет?

A
На сайте с 29.12.2007
Offline
68
#7
landan:
nikhotin, это все на локальной машине
dblokhin, да, error_reporting мне тоже это выдает, но что там исправить, и почему на апаче проблем нет?

Там ошибка может быть только в переменной $sandbox_name (либо отсутствует, либо не string).

L
На сайте с 19.09.2011
Offline
17
#8

Поставил nginx для статики и апач на бекенд. Все заработало.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий