Вопрос или проблема
Уже около 2 месяцев клиент не может загружать медиафайлы через загрузчик медиафайлов WordPress или через плагин WP File Manager.
Сайт размещен на GoDaddy, и мы проверили, что можем загружать все типы файлов в Файловый менеджер в cPanel.
Судя по всему, это не связано с пикселями изображения или размером файла. Загрузки прекращаются из-за тайм-аута (независимо от размера), и выдается сочетание двух ошибок:
Сервер не может обработать изображение. Это может произойти, если сервер занят или у него недостаточно ресурсов для выполнения задачи. Загрузка меньшего изображения может помочь. Предлагаемый максимальный размер - 2560 пикселей.
И
Неожиданный ответ от сервера. Возможно, файл успешно загружен. Проверьте в библиотеке медиафайлов или перезагрузите страницу.
Обе ошибки указывают на слишком большой размер файла, однако загрузки терпят неудачу независимо от размера файла. Я пробовал несколько файлов по 30 КБ и изображения размером 300 пикселей, так что, похоже, это не связано с размером файла. Включено отладка в wp-config.php
, но ошибки не появляются.
Шаги, которые я уже проверил:
-
Деактивировал все плагины, один за другим, чтобы увидеть, является ли проблема связанной с плагином (Нет).
-
Установил тему twentytwentyfour, чтобы увидеть, была ли проблема связана с темой (Нет).
-
Установил максимальные пределы загрузки и памяти в настройках PHP в cPanel (Нет).
-
Сбросил лимиты до значения по умолчанию и пробовал снова несколько раз (Нет).
-
Установил версию PHP на настройки по умолчанию (Нет).
-
Пробовал принудительно установить пределы загрузки с помощью
@ini_set
в темеfunctions.php
и вwp-config.php
(Нет). -
Проверил права на папку загрузок WP Content и они установлены правильно.
-
Текущие настройки в
wp-admin/.user.ini:
memory_limit = 1024M
upload_max_filesize = 512M
post_max_size = 512M
max_execution_time = 5000
max_input_time = 5000
max_input_vars = 5000
Другие вещи, которые я пробовал отключить, это GD в расширениях PHP, предполагая, что GD может мешать imagick.
Где еще может храниться код, который мешает этому? Есть ли еще что-нибудь, что я должен проверить, чего не включено выше?
Чего я упускаю?
Кросс-проверка .htaccess
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Если вышеуказанное не работает, попробуйте добавить эту строку в wp-config.php
define('WP_TEMP_DIR', ABSPATH . 'wp-content/uploads/');
Возможные основные причины, которые следует изучить
- Защита брандмауэра или DDoS: некоторые тарифные планы хостинга GoDaddy включают автоматические брандмауэры, которые блокируют определенные запросы. Общий хостинг
- Ограничения: тарифные планы общего хостинга GoDaddy часто накладывают жесткие
ограничения на ресурсы, даже если вы увеличиваете настройки.
Дайте знать, как все прошло!
Ответ или решение
Чтобы решить проблему с загрузкой медиафайлов на WordPress, необходимо провести детальный анализ возможных причин и решений. Поскольку проблемы загружаемых медиафайлов могут быть вызваны различными факторами, в данном случае мы опишем теорию проблемы, дадим примеры и предложим возможные приложения решений.
Теория
Проблемы с загрузкой медиафайлов на WordPress часто связаны с конфигурацией хостинга, серверными ограничениями или конфликтами с определенными плагинами или темами. Несмотря на то, что проверки уже проведены (например, отключение плагинов и смена темы), необходимо учесть дополнительные аспекты, такие как настройки сервера и ограничения, применяемые хостинг-провайдером, в данном случае GoDaddy.
Два основных сообщения об ошибках указывают на возможные ограничения ресурсов:
-
Сервер не может обработать изображение – это предполагает проблему с ресурсами сервера, такими как память или процессорные ограничения.
-
Неожиданный ответ от сервера – это может быть связано с непредвиденной задержкой или блокировкой некоторых функций сервером.
Пример
Ситуация с отказом в загрузке файлов может возникнуть даже на правильной конфигурации WordPress в случае, если сервер недостаточно мощный или если он неправильно настроен. Например, даже если настройки PHP (такие как upload_max_filesize
, post_max_size
) были увеличены в cPanel, физические ограничения сервера или политика хостинга могут препятствовать применению этих изменений.
Приложение
-
Конфигурация хостинга: Проверьте настройки хостинга GoDaddy. Может быть полезным обратиться в службу поддержки, чтобы уточнить возможные серверные ограничения и убедиться, что ваш план хостинга поддерживает нужный вам уровень ресурсов.
-
Firewall/DDoS защита: Убедитесь, что защитные системы не ограничивают определенные типы запросов. Это может включать в себя отключение некоторых уровней защиты на время тестирования загрузки файлов.
-
.htaccess и конфигурация WP: Выполните проверку файла .htaccess на предмет любых пользовательских правил, не входящих в стандартную конфигурацию WordPress:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
В файле
wp-config.php
попробуйте добавить:define('WP_TEMP_DIR', ABSPATH . 'wp-content/uploads/');
Это устанавливает временную директорию для WP, что иногда может помочь при проблемах с загрузкой медиафайлов.
-
Права доступа: Хотя вы упомянули, что проверили права доступа к папке загрузки WordPress, убедитесь, что они настроены следующим образом (обычно
755
для директорий и644
для файлов). Также проверьте, нет ли наложений на эти права со стороны сервера или сторонних служб. -
Проблемы с расширениями PHP: Убедитесь, что все необходимые модули PHP, такие как GD и Imagick, правильно установлены и обновлены. Также учитывайте влияние их отключения, если раньше это не давало результатов.
-
Доступ через FTP/SFTP: Если ни одно из решений не работает, рассмотри возможность загрузки файлов через FTP/SFTP как временное решение. Это позволит обойти возможные ограничения интерфейса WordPress.
-
Переключение между PHP-версиями: Попробуйте временно переключиться на другую версию PHP. Иногда определенные версии могут обладать специфическими багами или не совместимыми обновлениями.
-
Разделение файла на части: Иногда помогает разделение больших файлов на более мелкие части. Хоть это и не идеальное решение, но временно это может помочь.
Каждое из предложенных решений должно быть протестировано самостоятельно, чтобы определить, какое именно из них предотвращает загружаемые файлы от вызова ошибок. Обратитесь также к специалистам в поддержке GoDaddy для более детального анализа конфигурации их серверов и подсказок в специфичных улучшениях настроек, чтобы улучшить производительность загружаемых медиафайлов.