FrankenPHP的php-fpm模式不兼容WordPress自动安装,主因是SAPI模式下$_SERVER['DOCUMENT_ROOT']错乱、WP_TEMP_DIR未显式配置且权限不匹配、allow_url_fopen/cURL禁用、unzip缺失或PclZip兼容性弱,需手动设WP_TEMP_DIR、对齐用户权限、启用网络请求、安装unzip或强制使用PclZip。

FrankenPHP 的 php-fpm 模式不兼容 WordPress 自动安装流程
WordPress 后台点击“现在安装”时,会调用 PHP 的 wp_http(底层依赖 cURL 或 fsockopen)下载 ZIP 包,再用 PclZip 解压到 wp-content/plugins/。FrankenPHP 默认以 SAPI 模式运行(类似 CLI),不启用 php-fpm 的完整上下文,导致:
– $_SERVER['DOCUMENT_ROOT'] 和临时路径逻辑错乱
– get_temp_dir() 返回空或不可写路径
– wp_mkdir_p() 创建插件子目录失败,报错类似 PCLZIP_ERR_MISSING_FILE 或 “无法创建目录”
WP_TEMP_DIR 必须显式指向可写且由 FrankenPHP 进程拥有
FrankenPHP 进程用户(如 www-data 或 frankenphp)和文件系统权限必须对齐,不能依赖默认的系统 /tmp。常见错误是设了 WP_TEMP_DIR 但目录属主仍是 root 或权限为 755(缺少写入)。
- 在
wp-config.php中添加(放在ABSPATH定义之后):define('WP_TEMP_DIR', ABSPATH . 'wp-content/temp'); - 通过 SSH 执行:
mkdir -p wp-content/temp && chown www-data:www-data wp-content/temp && chmod 755 wp-content/temp(用户组名请按ps aux | grep frankenphp确认) - 确保
wp-content及其所有子目录属主一致,否则wp_mkdir_p()会在解压中途因权限中断
FrankenPHP 的 allow_url_fopen 和 cURL 支持常被禁用
FrankenPHP 构建时若未链接 cURL 扩展,或 php.ini 中关闭了 allow_url_fopen,WordPress 就无法发起 HTTP 请求下载插件 ZIP —— 表现为“下载失败”,但后台无明确报错,只有 debug.log 里出现 WP_Http_Curl::request failed 或 fopen() failed to open stream: no suitable wrapper。
- 检查:运行
frankenphp php -i | grep -E "(allow_url_fopen|curl\.enabled)" - 若 cURL 未启用,需重新编译 FrankenPHP 加上
--with-curl;若仅allow_url_fopen=Off,在php.ini中设为On - 临时绕过:改用 FTP 模式安装(需在
wp-config.php中定义FS_METHOD和 FTP 凭据),但这只是权宜之计
插件 ZIP 下载后解压失败多因 UID/GID 不匹配或缺少 unzip 二进制
FrankenPHP 进程以非 root 用户运行,而很多 VPS 镜像默认没装 unzip,或系统 unzip 二进制权限为 700(仅 root 可执行)。WordPress 在解压时会 fallback 到 PHP 原生 PclZip,但它不支持 ZIP64、分卷 ZIP 或某些压缩方式,遇到新版插件打包(如含大字体文件或 WebP 图片)就静默失败。
立即学习“PHP免费学习笔记(深入)”;
- 确认
unzip可用:which unzip && ls -l $(which unzip),应返回-rwxr-xr-x - 若缺失,Debian/Ubuntu 执行:
apt-get update && apt-get install -y unzip - 更稳妥的做法:在
wp-config.php中强制禁用外部解压工具,让 WordPress 全程走 PHP:define('DISALLOW_UNFILTERED_HTML', false); // 不相关,别加这个<br>define('UNZIP_BINARY', ''); // 关键:清空外部 unzip 路径,强制用 PclZip,但要注意 PclZip 对 ZIP 格式兼容性较弱,建议优先修复unzip
temp 目录都创建不了,后续全白搭。



















