คู่มือการแก้ไขปัญหาฉบับสมบูรณ์สำหรับปัญหาที่ WordPress Wordfence ไม่สามารถสร้างไฟล์ wordfence-waf.php ได้

มีคนบอกว่าหลังจากติดตั้ง Wordfence บนเว็บไซต์ของเขาแล้ว เขาเจอปัญหาข้อผิดพลาดที่บอกว่าไม่สามารถสร้างไฟล์ wordfence-waf.php ในไดเร็กทอรีหลักได้ ผมขอให้เขาส่งภาพหน้าจอมาให้ ปรากฏว่าข้อความแสดงข้อผิดพลาดมีแค่บรรทัดเดียว บอกว่าเป็นปัญหาเรื่องสิทธิ์การเข้าถึงไฟล์

ฉันคิดอยู่ครู่หนึ่งแล้วก็รู้ว่าเคยเจอปัญหานี้มาก่อนแล้ว ฉันใช้เวลานานมากพยายามหาทางแก้ไข จนเกือบคิดว่าผู้ให้บริการโฮสติ้งกำลังทำอะไรบางอย่างอยู่ สุดท้ายแล้วมันเป็นปัญหาเรื่องสิทธิ์การเข้าถึงและการเป็นเจ้าของ แต่ตรรกะของแผงควบคุมโฮสติ้งนั้นค่อนข้างซับซ้อนจริงๆ

คู่มือการแก้ไขปัญหาฉบับสมบูรณ์สำหรับปัญหาที่ WordPress Wordfence ไม่สามารถสร้างไฟล์ wordfence-waf.php ได้

ก่อนอื่นขอชี้แจงก่อนว่าไฟล์ wordfence-waf.php นี้คืออะไร

ไฟล์ดังกล่าวเป็นไฟล์ป้องกันของไฟร์วอลล์ Wordfence ซึ่งต้องเขียนไว้ในไดเร็กทอรีรากของเว็บไซต์ ในระดับเดียวกับ wp-config.php

หากไม่มีไฟล์นี้ ไฟร์วอลล์จะไม่สามารถเริ่มต้นทำงานได้ เปรียบเสมือนคุณติดตั้งแม่กุญแจแล้วแต่ไม่สามารถเสียบกุญแจเข้าไปได้

ตัวเลือกที่ 1: การแก้ไขสิทธิ์ด้วยการคลิกเพียงครั้งเดียวผ่านแผงควบคุม (BT Panel/)เฮสเทียซีพี/cPanel)

หากคุณใช้ BT Panel วิธีนี้ง่ายที่สุด ไปที่เว็บไซต์ของคุณ ค้นหาเว็บไซต์ที่เกี่ยวข้อง คลิก การตั้งค่า จากนั้นไปที่ สิทธิ์การเข้าถึงไดเร็กทอรี เปลี่ยนสิทธิ์การเข้าถึงไดเร็กทอรีรากของเว็บไซต์เป็น 755 และสิทธิ์การเข้าถึงไฟล์ทั้งหมดเป็น 644 จากนั้นตรวจสอบว่าผู้ใช้ที่กำลังทำงานอยู่คือ "www" หรือไม่ ถ้าไม่ใช่ ให้เปลี่ยนเป็น "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 644

cPanel ใช้งานง่ายกว่า เปิดตัวจัดการไฟล์ เปิดใช้งาน "แสดงไฟล์ที่ซ่อนอยู่" ที่มุมบนขวา คลิกขวาที่ไดเร็กทอรีแล้วเปลี่ยนสิทธิ์เป็น 755 เปลี่ยนสิทธิ์ของไฟล์เป็น 644 และยังมีฟังก์ชันในการกำหนดเจ้าของไฟล์ในตัวเลือกขั้นสูงอีกด้วย

ตัวเลือกที่ 2: เปลี่ยนสิทธิ์การเข้าถึงด้วยตนเองผ่าน SSH (ทั่วไป)ลินุกซ์)

หากแผงควบคุมไม่สามารถจัดการได้ ให้ใช้ 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 และเปลี่ยนโหมดกลไกการป้องกันเป็น การป้องกันแบบขยาย (Extended Protection) เพื่อข้ามการสร้างไฟล์รูท

วิธีแก้ปัญหาที่ 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 จะทำให้เว็บไซต์ของคุณเสี่ยงต่อการถูกโจมตีโดยตรง ซึ่งก่อให้เกิดความเสี่ยงด้านความปลอดภัยสูงมาก หากเว็บไซต์ของคุณถูกแฮ็ก คุณจะแก้ไขอะไรไม่ได้แล้ว

พูดตามตรง ผมไม่แน่ใจว่าวิธีแก้ปัญหาเหล่านี้จะได้ผลกับสถานการณ์ของคุณหรือไม่ แต่ผมได้แบ่งปันปัญหาที่ผมเจอและวิธีการที่ผมคิดค้นขึ้นมาแล้ว หากคุณได้รับข้อความแสดงข้อผิดพลาดอื่นๆ โปรดแคปหน้าจอแล้วส่งมาให้ผม ผมจะลองตรวจสอบดูอีกครั้ง

เนื่องจากคุณอ่านมาถึงตรงนี้แล้ว ถ้าคุณคิดว่ามีประโยชน์ โปรดกดไลค์และแชร์ด้วยนะคะ และถ้าอยากรับข่าวสารอัปเดตก่อนใคร สามารถติดตามฉันได้เลยค่ะ!

ขอบคุณที่อ่านบทความของฉัน แล้วพบกันใหม่ครั้งหน้า

หวัง Chen Weiliang บล็อก ( https://www.chenweiliang.com/ บทความแนะนำ "วิธีแก้ปัญหาแบบครบวงจรสำหรับปัญหา WordPress Wordfence ไม่สามารถสร้างไฟล์ wordfence-waf.php ได้" ที่แชร์ไว้ที่นี่ อาจเป็นประโยชน์สำหรับคุณ

ยินดีต้อนรับสู่การแบ่งปันลิงค์ของบทความนี้:https://www.chenweiliang.com/cwl-34337.html

หากต้องการปลดล็อคเคล็ดลับที่ซ่อนอยู่เพิ่มเติม ยินดีต้อนรับเข้าร่วมช่อง Telegram ของเรา!

แชร์และกดไลค์ถ้าคุณชอบ! การแชร์และการถูกใจของคุณคือแรงบันดาลใจอย่างต่อเนื่องของเรา!

 

发表评论

ที่อยู่อีเมลของคุณจะไม่ถูกเผยแพร่ 必填项已用 * 标注

เลื่อนไปที่ด้านบน