기사 디렉토리
어떤 분이 자신의 웹사이트에 Wordfence를 설치한 후 루트 디렉토리에 wordfence-waf.php 파일을 생성할 수 없다는 오류가 계속 발생한다고 말씀하셨습니다. 제가 스크린샷을 보내달라고 했더니, 오류 메시지는 파일 권한 문제라는 한 줄짜리였습니다.
잠시 생각해 보니 예전에 비슷한 문제를 겪었던 기억이 났습니다. 호스팅 업체가 무슨 꿍꿍이가 있는 건가 싶어 한참을 헤맸었죠. 알고 보니 권한 및 소유권 문제였는데, 호스팅 제어판의 논리가 참 복잡하더라고요.

먼저 wordfence-waf.php가 무엇인지 설명드리겠습니다.
실제로 이는 Wordfence 방화벽의 보호 파일이며, 웹사이트의 루트 디렉터리에 wp-config.php와 같은 레벨에 있어야 합니다.
이 파일이 없으면 방화벽이 시작될 수 없습니다. 마치 자물쇠를 설치했지만 열쇠를 넣을 수 없는 것과 같습니다.
옵션 1: 제어판(BT 패널)을 통한 원클릭 권한 수정헤스티아CP/cPanel)
BT 패널을 사용 중이라면 가장 간단한 방법입니다. 웹사이트에 접속하여 해당 사이트를 찾고, 설정을 클릭한 다음 디렉터리 권한으로 이동합니다. 웹사이트 루트 디렉터리 권한을 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해당 절차가 완료되면 워드프레스 관리자 페이지로 돌아가 방화벽을 다시 활성화하십시오. 그러면 문제가 해결될 가능성이 높습니다.
옵션 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의 경우, 사이트 설정에서 루트 경로 읽기 전용이나 파일 생성 금지와 같은 제한 사항을 찾아 제거하십시오.
또 다른 시나리오는 가상 호스트 또는 경량 클라우드 호스팅 자체에서 루트 디렉터리에 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/ 여기 공유된 "WordPress Wordfence에서 wordfence-waf.php 파일을 생성할 수 없는 문제에 대한 완벽한 해결책" 튜토리얼이 도움이 될 수 있습니다.
이 기사의 링크를 공유하는 것을 환영합니다:https://www.chenweiliang.com/cwl-34337.html
