当 WordPress 无法直接安装或更新插件时,通常是因为服务器配置限制了直接文件系统访问(例如缺少 wp-content 目录的写权限),导致 WP 尝试使用 FTP/SFTP 方式连接。你可以通过在 wp-config.php 中强制启用“直接写入”模式来绕过此限制。
✅ 解决方案:修改 wp-config.php
-
备份文件
操作前务必备份wp-config.php(通过 FTP、SSH 或主机控制面板)。 -
找到并编辑
wp-config.php
打开位于网站根目录的wp-config.php文件,在/* That's all, stop editing! Happy publishing. */这行注释之前添加以下代码:
define('FS_METHOD', 'direct');
💡 注意:
- 必须放在
require_once(ABSPATH . 'wp-settings.php');之前(通常在文件末尾附近)。- 确保语法正确(分号结尾,无多余空格/换行)。
- 保存并测试
保存文件后,刷新 WordPress 后台 → “插件” → “安装插件”,尝试安装一个新插件。若成功,则问题已解决。
⚠️ 重要前提与注意事项
| 条件 | 说明 |
|---|---|
| ✅ 文件权限正确 | 确保 wp-content 及其子目录(如 plugins, themes)对 Web 服务器用户(如 www-data, apache, nginx)有写权限(建议 755 目录 + 644 文件;临时可设为 775 测试,但生产环境慎用)。 |
| ❌ 非共享主机限制 | 某些虚拟主机(Shared Hosting)因安全策略禁止 direct 方法,此时即使加此行仍无效,需联系主机商开启或直接授权。 |
| 🔒 安全性提醒 | FS_METHOD = 'direct' 会降低部分安全层(依赖 OS 权限控制),仅建议在确认权限安全后使用。生产环境更推荐修复底层权限而非长期依赖此 hack。 |
🔍 如果仍然失败?排查步骤
- 检查错误日志(
wp-content/debug.log,需先在wp-config.php中添加):define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); - 验证当前 PHP 进程用户:
ls -ld wp-content # 输出类似:drwxr-xr-x 2 www-data www-data ...确保该用户对目标目录有写权限。
- 尝试手动创建插件测试:
mkdir -p wp-content/plugins/test-plugin echo "<?php /* Test Plugin */" > wp-content/plugins/test-plugin/index.php若能手动创建,则问题确为权限;否则可能是 SELinux、AppArmor 或云盘挂载限制。
需要我帮你生成完整的 wp-config.php 修改示例片段,或提供针对不同主机环境(如阿里云、腾讯云、LocalWP)的权限设置指南吗?
PHPWP博客