文章目錄
有個說他的網站裝完Wordfence 之後一直報錯,說無法在根目錄建立wordfence-waf.php 檔案。我請他截圖給我看,報錯訊息就一行,說文件權限問題。
我尋思了一下,這事兒我之前也遇過。當時搞了大半天,差點以為是主機商在搞鬼。後來才發現,就是權限和擁有者的問題,但主機面板那套邏輯確實很容易把人繞暈。

先說清楚這個wordfence-waf.php 是什麼。
它其實就是Wordfence 防火牆的防護文件,必須寫在網站根目錄,跟wp-config.php 同一層級。
沒有這個文件,防火牆啟動不了,等於你裝了個鎖但鑰匙插不進去。
方案1:面板一鍵修權限(寶塔/赫斯提亞CP/cPanel)
如果你用的是寶塔,其實最簡單。網站進去,找到對應站點,點設置,目錄權限那塊,網站根目錄改成755,所有檔案改成644。然後看看運行用戶是不是www,不是的話切換一下。點個修復權限按鈕,等它跑完,刷新Wordfence 重試就行了。
HestiaCP 的話,你進網站編輯頁面,開一個叫Allow write access to web root 的選項。然後跑幾個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 環境下,web 運行組一般都是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跑完回到WP 後台,重新啟用防火牆,大機率就好了。
方案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,把所有Deny all、限製檔案寫入、禁止建立PHP 的規則全刪了。 Nginx 的話,網站設定裡看看有沒有root 路徑read only 或create_file off 這個限制,刪掉。
還有一種情況,虛擬主機或輕雲主機本身就限制根目錄產生PHP 檔案。這種你找主機商解除限制,或是切換Wordfence 的防護模式。 Wordfence 選單進去,All Options,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 會直接把網站暴露出去,安全風險極高,到時候被入侵了哭都來不及。
說實話我也不確定這些方案對你的情況有沒有用,但我已經把我踩過的坑和摸索出來的方法都分享了。你要是還有別的報錯訊息,截圖發給我,我再幫你看看。
以上,既然看到這裡了,如果覺得不錯,隨手點讚、轉發吧,如果想第一時間收到推送,也可以給我個關注~
謝謝你看我的文章,我們,下次再見。
希望陳溈亮博客( https://www.chenweiliang.com/ ) 分享的《WordPress Wordfence 無法建立wordfence-waf.php 完全解決教學》,對您有幫助。
