Каталог статей
Кто-то упомянул, что после установки Wordfence на его веб-сайте у него постоянно возникали ошибки, сообщавшие о невозможности создания файла wordfence-waf.php в корневом каталоге. Я попросил его прислать скриншот; сообщение об ошибке состояло всего из одной строки и указывало на проблему с правами доступа к файлу.
Я немного подумал и понял, что уже сталкивался с этим раньше. Я потратил кучу времени, пытаясь разобраться, и почти подумал, что хостинг-провайдер что-то замышляет. Оказалось, проблема была в правах доступа и правах собственности, но логика панели управления хостингом может быть очень запутанной.

Позвольте мне сначала уточнить, что это за файл wordfence-waf.php.
На самом деле это файл защиты брандмауэра Wordfence, который необходимо разместить в корневом каталоге веб-сайта, на том же уровне, что и wp-config.php.
Без этого файла брандмауэр не сможет запуститься; это как если бы вы установили замок, но ключ нельзя было вставить.
Вариант 1: Изменение разрешений одним щелчком мыши через панель управления (BT Panel/)ГестияCP/cPanel)
Если вы используете BT Panel, это, пожалуй, самый простой способ. Перейдите на свой веб-сайт, найдите соответствующий сайт, нажмите «Настройки», затем перейдите в раздел «Права доступа к каталогам». Измените права доступа к корневому каталогу веб-сайта на 755, а права доступа ко всем файлам — на 644. Затем проверьте, используется ли в качестве пользователя пользователь «www»; если нет, измените его. Нажмите кнопку «Исправить права доступа», дождитесь завершения процесса, обновите Wordfence и попробуйте снова.
Для HestiaCP перейдите на страницу редактирования веб-сайта и включите опцию «Разрешить запись в корневой каталог веб-сайта». Затем выполните несколько команд SSH, чтобы унифицировать владельца и права доступа к каталогу веб-сайта.
chown -R admin:www-data /home/admin/web/你的域名/public_html
chmod -R 755 /home/admin/web/你的域名/public_html
find /home/admin/web/你的域名/public_html -type f -print0 | xargs -0 chmod 644cPanel более интуитивно понятен. Откройте файловый менеджер, включите параметр «Показывать скрытые файлы» в правом верхнем углу, щелкните правой кнопкой мыши по каталогу и измените права доступа на 755, измените права доступа к файлу на 644, а также есть функция для исправления владельца файла в расширенных настройках.
Вариант 2: Изменение прав доступа вручную через SSH (общие настройки)Linux)
Если панель управления не справляется, используйте SSH вручную. После подключения к серверу сначала объедините права собственности. В среде LNMP/LEMP группа среды выполнения веб-сервера обычно имеет вид www-data или www.
chown -R 你的面板用户:www-data /网站根目录完全路径Затем установите права доступа для папки на 755, а для файла — на 644.
find /网站根目录 -type d -print0 | xargs -0 chmod 755
find /网站根目录 -type f -print0 | xargs -0 chmod 644После завершения процесса вернитесь в административную панель WordPress и снова включите брандмауэр; это, скорее всего, решит проблему.
Вариант 3: Создать файл wordfence-waf.php вручную (отличное решение, когда права доступа заблокированы).
Если вы не можете ничего изменить через SSH-панель, сделайте это вручную. Создайте файл с именем wordfence-waf.php в корневом каталоге и вставьте в него следующий код.
<?php
if (!defined('WFWAF_VERSION')) {
define('WFWAF_VERSION', '7.11.0');
}
$wafConfig = array(
'wafAutoPrepend' => true,
'wafFile' => __FILE__,
'wpContentDir' => dirname(__FILE__) . '/wp-content',
'wpPluginsDir' => dirname(__FILE__) . '/wp-content/plugins',
'wafLogDir' => dirname(__FILE__) . '/wp-content/wflogs',
);
require_once $wafConfig['wpPluginsDir'] . '/wordfence/lib/waf/waf.php';Не забудьте заменить версию 7.11.0 на вашу текущую версию Wordfence. Установите права доступа к файлу на 644, а владелец должен совпадать с владельцем веб-сайта. Затем отредактируйте файл wp-config.php и добавьте следующую строку в самом начале файла.
require_once 'wordfence-waf.php';Сохраните и обновите Wordfence. Брандмауэр автоматически распознает его и больше не будет сообщать об ошибках.
Вариант 4: Отметьте правила, ограничивающие доступ на запись.
Иногда проблема не в правах доступа, а в конфигурационном файле, который блокирует доступ. Откройте файл .htaccess и удалите все правила, ограничивающие доступ на запись в файлы или препятствующие созданию PHP-файлов. Для Nginx проверьте конфигурацию вашего сайта на наличие ограничений, таких как «только для чтения корневого пути» или «create_file off», и удалите их.
Другой сценарий заключается в том, что сам виртуальный хост или облегченный облачный сервер ограничивает генерацию PHP-файлов в корневом каталоге. В этом случае вам необходимо связаться с вашим хостинг-провайдером, чтобы снять ограничение, или изменить режим защиты Wordfence. Перейдите в меню Wordfence, «Все параметры», «WAF» и измените режим защиты на «Расширенная защита», чтобы обойти создание файлов в корневом каталоге.
Решение 5: Конфликты плагинов приводят к блокировке.
Некоторые плагины кэширования или безопасности могут блокировать эту операцию. Временно отключите плагины кэширования, такие как WP Rocket, W3 Total Cache и LiteSpeed Cache, а также плагины безопасности, такие как Sucuri и iThemes Security. Затем очистите серверный кэш и opcache и перезапустите службу PHP.
systemctl restart php8.3-fpmПоследовательность действий для быстрого устранения неполадок (рекомендуется выполнять шаги по порядку).
Я предлагаю вам следовать этому порядку, чтобы избежать лишних сложностей. Во-первых, унифицируйте права доступа и владения; это с наибольшей вероятностью решит проблему. Если это не сработает, перезапустите PHP-FPM и обновите бэкэнд. Если и это не поможет, создайте вручную новый файл и измените wp-config. Затем проверьте, не блокирует ли ваша конфигурация Nginx или Apache создание новых PHP-файлов в корневом каталоге. Наконец, рассмотрите возможность переключения режимов брандмауэра.
Одно, о чём я должен вам напомнить: никогда не устанавливайте права доступа на 777. Права доступа к папкам должны быть 755, а к файлам — 644; это стандарт. Установка прав доступа на 777 напрямую откроет доступ к вашему веб-сайту, что создаёт чрезвычайно высокий риск для безопасности. Если вас взломают, будет уже слишком поздно об этом жалеть.
Честно говоря, я не уверен, подойдут ли эти решения для вашей ситуации, но я поделился теми трудностями, с которыми столкнулся, и методами, которые мне удалось найти. Если у вас появятся другие сообщения об ошибках, сделайте скриншот и отправьте его мне, я еще раз все проверю.
Раз уж вы дочитали до этого места, если вам это показалось полезным, пожалуйста, поставьте лайк и поделитесь этим постом. Если вы хотите получать обновления первыми, вы также можете подписаться на меня!
Спасибо за прочтение моей статьи. До встречи в следующий раз.
Блог Хоуп Чен Вейлян ( https://www.chenweiliang.com/ Возможно, вам пригодится руководство "Полное решение проблемы с невозможностью создания файла wordfence-waf.php в WordPress Wordfence", размещенное здесь.
Добро пожаловать, чтобы поделиться ссылкой на эту статью:https://www.chenweiliang.com/cwl-34337.html
