Июн
Решаем проблему с open_basedir.
В ночь со вчера на сегодня мой блог переезжал на новый хостинг – обновил список DNS-серверов, перенес файлы и базу данных, настроил config и преспокойно пошел спать. Зато утром меня ждал сюрприз вида:
Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/) is not within the allowed path(s): (/home/xxx:/usr/lib/php:/usr/local/lib/php:/tmp) in /home/xxx/xxx/wp-includes/functions.php on line 1948
Warning: file_exists() [function.file-exists]: open_basedir restriction in effect. File(/) is not within the allowed path(s): (/home/xxx:/usr/lib/php:/usr/local/lib/php:/tmp) in /home/xxx/xxx/wp-includes/functions.php on line 1939
Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/) is not within the allowed path(s): (/home/xxx:/usr/lib/php:/usr/local/lib/php:/tmp) in /home/xxx/xxx/wp-includes/functions.php on line 1948
Плюс сообщение о нехватке памяти. И если по второй проблеме в интернете еще можно что-то нагуглить, и решить ее правкой .htaccess или конфига, то по первой информации меньше, да и касается она, в основном, не wordpress, а joomla и drupal.
После долгих блужданий по отечественным и зарубежным (больше зарубежным) блогам и общения с технической поддержкой хостинга, проблему решить удалось. Виновником всего безобразия оказался кусок кода в файле functions.php, отвечающий через функцию wp_mkdir_p (function wp_mkdir_p( $target )
) за рекурсивное создание папок – он обращался за пределы отведенной под блог папки к корню сервера.
Было найдено три способа решить проблему. Первый способ предполагал закомментировать кусок кода, отвечающий за вывод сообщения об ошибке. Но, сами понимаете, это не решает проблему, хотя читатель блога ее и не заметит. Вторым способом, предложенным технической поддержкой хостинга – изменить путь работы скрипта, я воспользоваться не успел, так как решение было найдено в MySQl: заходим в таблицу wp_options(название может отличаться в зависимости от используемого префикса) и находим option_name “upload_path”, значение которого и надо отредактировать. Лично у меня была ошибка в адресе до папки “uploads”. В сети же есть вариант, по которому надо изменить адрес вида “/home/xxx/wp-content/uploads” на “wp-content/uploads” (кавычки печатать не надо). Да, и не забудьте сделать бэкап базы данных перед работой с ней, чтобы в случае необходимости сделать откат настроек.
Если знаете еще какой-нибудь способ, то буду рад, если вы им поделитесь в комментариях к статье.
Кстати, хостинг решил сменить по причине того, что на предыдущем почта уже изначально пробита спамом. А если ужесточить фильтр, то перестают приходить сообщения с твиттера и некоторых других сервисов. На новом хостинге же таких проблем нет, да и возможностей намного больше при той же самой цене. Правда, стабильность по некоторым отзывам немного ниже, а по другим и такая же. Вот и проверим.
13:44 06 Мар 2013
Спасибо вам за эту публикацию! Перенесла сайт на другой хостинг и уже голову сломала, как это решить, долго бы еще мучилась, если бы не вы!