Просто чтобы заполнить вас в моей ситуации.
Запуск многострановой версии WordPress: 3.5.2 чистая установка.
Нулевые плагины сторонних разработчиков. Все мои плагины отключены для отладки.
Использование сопоставления доменов WordPress MU для нескольких разных TLD в сети.
Я также подделал все сетевые URL-адреса для работы с файлом с моего локального сервера, а не с существующей прямой сетью.
Файл хостов: vi /etc/hosts/
Может содержать что-то вроде:
127.0.0.1 domain-a.com 127.0.0.1 www.domain-a.com 127.0.0.1 domain-b.com 127.0.0.1 www.domain-b.com
для каждого сайта в сети …. и т. д.
Я сделал это, так что мне не нужно менять URL-адреса сайтов и что у вас есть.
Все на каждом сетевом сайте работает по назначению. Единственная проблема – загрузка медиафайлов. По какой-то причине они не загружаются должным образом. Пользователь является полноправной ролью пользователя-администратора, поэтому он не может быть связан с разрешением.
В настоящее время я запускаю Ubuntu 12.04 с PHP 5.4.6 (FAST-CGI) .
При загрузке изображения я получаю очень общую ошибку от WordPress.
Error 40 Year Old … to Life.jpg HTTP error.
После переключения PHP из FAST-CGI
в MOD-PHP
я получил немного более конкретный ответ от WordPress.
Error 40 Year Old … to Life.jpg The uploaded file could not be moved to wp-content/uploads/sites/3/2013/07.
Я проверил каталог: ./wp-content/uploads/sites/3/2013/
и нет /07/
создан автоматически. Поэтому я попытался вручную создать его и снова загрузить из FAST-CGI
и MOD-PHP
, по-прежнему происходят одни и те же ошибки.
Я просмотрел что-то вроде: ./wp-admin/network/site-settings.php?id=3
в панели управления сетевого администратора, ища параметры, связанные с носителем.
Uploads Use Yearmonth Folders => true Upload Path => '' //blank Upload Url Path => '' //blank
Я проверил живую многосайтовую сеть вместе с другими установками на нескольких сайтах, и они, похоже, имеют одинаковые настройки.
Затем я начал думать, что это может быть связано с htaccess.
Когда я иду в Network Admin -> Settings -> Network Setup
Он говорит мне использовать:
RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] # add a trailing slash to /wp-admin RewriteRule ^wp-admin$ wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^(wp-(content|admin|includes).*) $1 [L] RewriteRule ^(.*\.php)$ $1 [L] RewriteRule . index.php [L]
Это то, что я использовал, кроме небольшого изменения в начале (сразу после RewriteEngine On
), позволяющего перенаправлять URL-адреса, не связанные с WWW, на www-адреса.
Пример:
# DOMAIN-A Redirect non-www urls to www RewriteCond %{HTTP_HOST} ^domain-a.com RewriteRule ^(.*)$ http://www.domain-a.com/$1 [R=301,L] # DOMAIN-B Redirect non-www urls to www RewriteCond %{HTTP_HOST} ^domain-b.com RewriteRule ^(.*)$ http://www.domain-b.com/$1 [R=301,L]
Однако эти правила не совпадают, как объясняет WordPress Codex . Я пробовал рекомендации в соответствии с Кодексом WordPress, все еще не желая загружать изображения в моей многопользовательской сети WordPress.
У меня в настоящее время SUBDOMAIN_INSTALL
установлено значение true, используя соответствующие правила перезаписи в соответствии с WordPress Codex. Я также попытался установить SUBDOMAIN_INSTALL
на false, снова … используя соответствующие правила перезаписи. Не исправили проблему.
Живая сеть (версия: 3.5.2) также перестала разрешать загрузку изображений.
Я недостаточно опытен с несколькими сайтами, чтобы узнать, что может вызвать эту проблему. Я продолжу расследование этого, если у кого-то еще нет идеи, как решить эту проблему, пожалуйста, поделитесь своими приобретенными знаниями!
Обратите внимание, что это 100% проблема с памятью. Он даже не загрузит файл изображения 1kb.
Я пробовал все возможные решения, как упоминалось в разделе Как исправить ошибку HTTP при загрузке изображений? и до сих пор не повезло, что это работает.
Использование Dashboard -> Media -> Add New -> browser uploader
вместо многофайлового загрузчика приводит к ошибке и внутреннему серверу.
По какой-то причине я могу последовательно загружать этот случайный конкретный образ снова и снова без каких-либо проблем, но любое другое изображение, которое я пытаюсь загрузить, не удается … даже изображения размером 1 КБ.
Я могу загрузить некоторые изображения, а не другие. Некоторые загрузки изображений вызывают ошибки внутреннего сервера, а некоторые нет. Некоторые могут быть 1кб, а некоторые могут быть 5 МБ. Абсолютно озадачиваешь.
Благодаря @s1lv3r
и @GhostToast
за полезные советы в чате я @GhostToast
проблему.
Как указано в моем первоначальном вопросе , о котором я говорил выше, я заявил, что я тестировал как FAST-CGI
и MOD-PHP
, оба продолжали реплицировать ту же ошибку.
Как указано в чате, я тестировал как на выделенных серверах Ubuntu 12.04, так и на CentOS 5.9.
Сообщение чата от @s1lv3r
в конечном счете, вызвало идею тестирования PHP-FPM
… и посмотрите на это? PHP-FPM
решил тайну!
Я много раз тестировал как Ubuntu 12.04, так и CentOS 5.9 вместе с включенными плагинами, с включенными плагинами, с включенной поддержкой темы, а также с настраиваемой темой. Он определенно загружал каждое изображение, пусть и маленькое или большое – без ошибок.
Поэтому еще раз в случае, если вы не поймали его раньше. Если у вас есть похожие симптомы с вашим многостраничным сайтом WordPress. Попробуйте включить PHP-FPM
на свой сервер или, как указано в чате, через @s1lv3r
Если вы используете FAST-CGI
вы можете попробовать chmodding ваш каталог загрузок до 777.
Включение PHP-FPM
позволило решить эту проблему на многостраничном сайте WordPress, вызывая ошибку HTTP при загрузке изображения.
BoF EDIT 10/20/2016
Если вы получаете HTTP-ошибки с помощью WordPress Multisite, рассмотрите способ настройки вашей установки.
Для WordPress Multisite существует два варианта:
Я управляю сетью всех сайтов, использующих TLD, в установке «подкаталог». Они отлично работали навсегда. Внезапно они начали сбой при загрузке файлов с помощью «HTTP Error».
Проблема только в WordPress, и проблема в HTTP. Так что на WordPress и Apache есть что-то другое. Единственная общая ссылка – .htaccess
.
Если вы посмотрите на WordPress Codex :: .htaccess и Mod Rewrite Правила перезаписи на самом деле очень разные в зависимости от типа установки, которую вы настроили для Multisite.
Я заменил правила перезаписи для установки «подкаталога» с соответствующими правилами перезаписи для установки «поддомена». Затем я также обновил wp-config.php
чтобы изменить define('SUBDOMAIN_INSTALL', false);
для этого define('SUBDOMAIN_INSTALL', true);
БУМ! Задача решена. Нет больше HTTP Ошибка при загрузке файлов в WordPress Multisite с использованием TLD для каждого сайта в сети.
EoF EDIT 10/20/2016