Отсутствует временная папка несмотря на настройки в wp-config.php
При попытке загрузить медиафайлы в WordPress 4.0, работающий на shared-хостинге с Apache 2.2.14 и PHP 5.3.2, я получаю сообщение об ошибке "Missing a temporary folder" (Отсутствует временная папка). У меня нет доступа к php.ini
, который глобально управляется хостингом и находится вне моей папки html
.
Я установил WP_TEMP_DIR
в wp-config.php
. Вот соответствующая часть этого файла:
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
require_once(ABSPATH . 'wp-settings.php');
define('WP_TEMP_DIR', ABSPATH . 'wp-content/temp/');
Я также пробовал другие варианты, такие как:
define('WP_TEMP_DIR', '/www/wp-content/temp/'); // абсолютный путь
и:
define('WP_TEMP_DIR', 'wp-content/temp/');
Обратите внимание, что обе папки wp-content
и wp-content/temp
имеют права доступа 777
.
Тем не менее, это не работает. Обратите внимание, что каждый раз, когда я вношу изменения, я выхожу из админки и захожу обратно. У меня нет контроля над самим сервером, поэтому я не знаю, применяются ли и когда мои настройки в этой папке.
Итак, мои вопросы:
- Должны ли изменения в
wp-config.php
иметь немедленный эффект? - Как я могу получить больше информации в WordPress, кроме сообщения об ошибке в админ-панели? Как можно отладить эту ошибку?
- Есть ли у вас другие идеи о том, что вызывает эту проблему и как её решить в моей среде shared-хостинга (без консоли, только FTP и админка WordPress)?
попробуйте использовать
get_temp_dir()
чтобы проверить, использует ли WordPress вашу константу WP_TEMP_DIR.
я протестировал этот код в wp-config.php, и он работает:
define('WP_TEMP_DIR', dirname(__FILE__) . '/wp-content/temp/');
но его нужно разместить перед строкой:
/* That's all, stop editing! Happy blogging. */
в вашем файле wp-config.php.

Это сообщение означает, что движок PHP попытался, но не смог найти директорию для временного хранения загружаемого файла до его обработки PHP-скриптами. Поскольку это происходит до выполнения любого скрипта, маловероятно, что вы сможете решить эту проблему с помощью написания PHP-кода.
Возможно, вы сможете изменить настройку upload_tmp_dir
в файле .htaccess
, но лучше всего обратиться в службу поддержки, так как это проблема конфигурации сервера, даже если вы сможете найти временное решение.

Сама настройка в порядке. Проблема может быть в правах доступа. Измените права рекурсивно для папки wp-content
на 777
. Это может вызвать проблемы с безопасностью, поэтому важно следить за тем, кто имеет доступ и возможность записи файлов в эту директорию.
Возможно, также потребуется изменить права для папок wp-admin
и wp-includes
на 777
. Обратите внимание, что это не рекомендуется.
В моем случае, после установки прав для всех трех папок, загрузки снова заработали.
