понедельник, 21 января 2013 г.

wordpress: HTTP error

Иногда при попытке заливки картинок вылезает HTTP error

Сначала надо проверить, что заливается объект менее 128кб, не картинка, лучше найти небольшой .pdf или текстовый файл. Проверить нужно оба загрузчика, флэш и простой.
Если заливается: открываем лог ошибок, скорее всего там будет строчка
mod_fcgid: HTTP request length 136495 (so far) exceeds MaxRequestLen (131072), referer: http://site.ru/wp-admin/media-new.php

Фикс: в конфиг апача в секцию VirtualHost нужного сайта
FcgidMaxRequestLen 134217728
(размер в байтах, тут 128Мб). также желательно обрамить в ifmodule fcgid.c
и перезапускаем апач

Если также заливаются объекты более 128кб, но менее 2Мб - это скорее всего уже лимит пхп или возможно nginx
для php нужно найти конфиг и там заменить 
upload_max_filesize = 2M
2 на 128М например. Если стоит ispmanager и режим fastcgi  - в каталоге сайта уровнем выше www будет php-bin или аналоги, там php.ini - можно туда. Также желательно поправить в основном конфиге, его расположение зависит от дистрибутива.
Проверка:
sudo -u siteuser php -i |grep upload_max_filesize
где siteuser - пользователь для сайта. Если режим ITK или mod_php, просто правим основной конфиг.

в nginx проверить, что есть строчка
client_max_body_size
со значением, нужным нам, например 128М. Если нет - вписать
client_max_body_size 128M;

Если никакие не заливаются:
Проверить, что mod_security не загружен
# apachectl -M|grep security
Если выдало название модуля - он стоит, нужно добавить исключения в .htaccess в корне wp каталога
<IfModule mod_security.c>
<Files async-upload.php>
SecFilterEngine Off
SecFilterScanPOST Off
</Files>
</IfModule>
<IfModule mod_security.c>
<Files upload.php>
SecFilterEngine Off
SecFilterScanPOST Off
</Files>
</IfModule>

Теперь надо проверить существование каталога uploads (wp-content/uploads), для поиска приложим чуть-чуть мозгов. Если нету - создать и выставить права и владельца.
Если есть - опять же смотрим права и владельца, смотрим еррорлог.

Теперь может быть ошибка с невозможностью перемещения залитого файла в подкаталог, связанный с текущей датой. В этом случае нужно выставить на этот каталог права 777 и снова залить картинку, она должна там появиться, но владелец может быть не сам юзер а апач (www, www-data итд). Актуально, когда всякие pdf заливаются, а картинки - нет. Причина пока непонятна, но явно вмешивается модуль ресайза.

Чаще всего проблемы именно с ограничениями на размер у пхп, нгинха, fcgid/fastcgi, поэтому начинать проверку всегда с маленького файла и всегда проверять логи.

http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html
http://leonking.com.ua/wordpress/http-error-wordpress-2-8-6-oshibka-pri-zagruzke-izobrazhenij.html
http://lud.icro.us/wordpress-plugin-image-upload-http-error-fix/

Комментариев нет:

Отправить комментарий