Вопрос или проблема
Я перенес свой веб-сайт с тарифного плана WP Startup от Hostpapa на тарифный план Business от Hostinger. Миграцию выполнила поддержка Hostinger, используя zip-резервные копии моей базы данных и файлов. В админке сайта я получаю сообщение: “IP2Location Country Blocker требует для работы BIN базу данных IP2Location. Настройте свою базу данных сейчас.”
Каждый раз, когда я пытаюсь установить BIN базу данных плагина IP2Location Country Blocker (версия Local Query — около 2.5 МБ на нашем предыдущем хосте), я получаю следующее сообщение об ошибке:
Я проверил (по совету разработчика плагина), что папка wp-content/uploads/ip2location пуста и права доступа к папке установлены на 755.
Я попытался (по совету поддержки Hostinger) восстановить права собственности на файлы в hPanel до значений по умолчанию.
Я полностью удалил плагин, включая все файлы и папки, и установил его заново.
Я также попытался использовать плагин IP Location Block вместо IP2Location Country Blocker, но первый “не мог быть активирован, потому что вызвал фатальную ошибку.”
Я ожидал, что сотрудники поддержки Hostinger смогут диагностировать или на самом деле исправить проблему с IP2Location Country Blocker. Их последнее предложение было в том, чтобы я задал вопрос здесь. Никто там не может разобраться. На Hostpapa на общедоступном сервере с меньшими доступными ресурсами всё работало нормально.
Любые идеи приветствуются. Спасибо.
Ответ или решение
Конечно, давайте разберемся с этой проблемой более детально. Вы столкнулись с проблемой установки локальной версии BIN базы данных IP2Location на вашем сайте, размещенном на тарифе "Business" от Hostinger после миграции с Hostpapa. Основная проблема заключается в невозможности записи в файловую систему, о чем свидетельствует ошибка "No permission to write into file system". Рассмотрим эту ситуацию с теоретической точки зрения, приведем примеры и предложим конкретные шаги для решения проблемы.
Теория
Прежде всего, давайте определим, что может быть причиной ошибки, связанной с правами доступа. Веб-приложения, такие как WordPress, требуют определенных прав на запись в файловую систему, чтобы иметь возможность загружать и сохранять файлы. Когда говорится о правах доступа в файловой системе, подразумевается уровень доступа, который установлены к файлам и директориям. Стандартные права доступа в UNIX-системах задаются числовыми значениями: 755 для директорий и 644 для файлов, где первая цифра означает права пользователя, вторая – группы, и третья – всех остальных.
Проблема с правами может возникать по нескольким причинам:
-
Права и собственность файлов: Несмотря на то, что вы изменили права доступа для директории
wp-content/uploads/ip2location
на 755, существует вероятность, что пользователь, от имени которого работает ваш веб-сервер, не имеет права записи в эту директорию. -
Selinux или другие ограничения системы: На некоторых серверах могут быть включены дополнительные уровни безопасности, такие как Selinux, AppArmor и другие, которые могут ограничивать запись в определенные директории, даже если права доступа установлены корректно.
-
Неправильная конфигурация PHP: Настройки PHP, такие как
open_basedir
, могут ограничивать доступ к определенной части файловой системы.
Пример
Ваша ситуация иллюстрирует типичную проблему переноса сайта, когда может нарушаться настройка прав на уровне пользователей сервера. На Hostpapa, возможно, веб-сервер запускался от имени пользователя, имевшего прямой доступ к нужным директориям, тогда как на Hostinger сервер может работать от имени другого пользователя, не имеющего таких прав.
Применение
Для решения проблемы выполните следующие шаги:
-
Проверка пользователя, от которого выполняется веб-сервер:
-
Откройте файл wp-config.php и добавьте следующий код для определения пользователя, от имени которого работает PHP:
echo '<pre>'; echo 'Current PHP user: '; system('whoami'); echo '</pre>';
-
Посмотрите, какой пользователь выведется на экран. Далее убедитесь, что этот пользователь имеет права на запись в директорию
wp-content/uploads/ip2location
.
-
-
Изменение прав на директорию:
- Через SSH или панель управления хостингом измените владельца директории на пользователя, от имени которого работает веб-сервер (например, с помощью команды
chown -R <username>:<groupname> wp-content/uploads/ip2location
).
- Через SSH или панель управления хостингом измените владельца директории на пользователя, от имени которого работает веб-сервер (например, с помощью команды
-
Selinux и другие настройки безопасности:
- Убедитесь, что Selinux (если он включен) настроен таким образом, чтобы разрешить запись в нужные директории. Это может потребовать вмешательства технической поддержки Hostinger.
-
PHP и Apache/Nginx конфигурации:
- Проверьте настройки PHP, особенно значения директивы
open_basedir
. Убедитесь, что путь/wp-content/uploads/ip2location
включен в разрешенные.
- Проверьте настройки PHP, особенно значения директивы
-
Обратитесь в службу поддержки:
- Если самостоятельно не удается устранить проблему, депонировать ваш план к службе поддержки с четким указанием того, что требуется корректировка прав файловой системы или конфигурации PHP.
-
Альтернативные решения:
- Если проблема продолжает сохраняться, рассмотрите возможность временного использования удаленной версии IP2Location и изучите возможность переноса сайта на другой хостинг-провайдер, который может предоставить лучшую поддержку ваших технических потребностей.
Ваш опыт на Hostpapa показывает, что проблема связана именно с серверными настройками Hostinger. Основные действия, которые находятся в вашей компетенции, уже предприняты, и, вероятно, оставшиеся шаги должны выполняться с помощью техподдержки. Надеюсь, это руководство поможет вам в решении проблемы.