解决WordPress在PHP8禁用chmod更新失败的问题

nZone 2023年11月16日更新于8 月前 共627字 7行代码 预计3分钟 评论 82
阿里云折扣】服务器活动对比【腾讯云秒杀
WordPress更新失败

升级到 PHP8.2 版后,WordPress程序不太友好,除了主题插件的不兼容问题外,还遇到后台无法在线安装更新插件或主题的问题,提示更新失败。

注意这个更新失败提示,不是上面的“连接丢失或服务器忙,请稍后再试”,而是下面的致命错误,文件都正常下载到临时目录了。

WordPress更新失败错误提示

更新失败:此站点遇到了致命错误,请查看您站点管理员电子邮箱中收到的邮件来获得指引。了解有关对WordPress进行故障排除的更多信息。

PHP Fatal error: Uncaught Error: Call to undefined function chmod() in \wp-admin\includes\class-wp-filesystem-direct.php:173

PHP Warning: chmod() has been disabled for security reasons in \wp-admin\includes\class-wp-filesystem-direct.php on line 173

这个173行代码如下:

if ( ! $recursive || ! $this->is_dir( $file ) ) {
return chmod( $file, $mode );
}

原因是在你的 PHP 环境中没有启用 chmod() 函数,或者该函数被禁用了。要解决这个问题,在 PHP 配置文件(php.ini)中,确保 chmod 函数没有被禁用。你可以在 php.ini 文件中搜索 disable_functions 配置项,确保其中没有 chmod。

disable_functions=exec,system,passthru,popen,pclose,shell_exec,proc_open,dl,chmod,escapeshellarg,escapeshellcmd,sh2_exec,proc_terminate,proc_close,putenv,pcntl_setpriority,pcntl_getpriority,pcntl_signal,pcntl_fork,apache_setenv,imap_open,syslog,openlog,pcntl_exec

把其中的(chmod,)删掉即可解决。

chmod 函数用于修改文件权限,WordPress在更新和安装插件或主题时需要调整文件权限。但通常情况下,对于 Windows 系统,不需要使用 chmod 函数来调整文件权限。

把环境切换回 PHP7.4 版本,则是正常运行,不需要启用 chmod 这个函数,可以正常更新插件或主题,没有任何故障。而在 PHP8 任何版本(8.0、8.1、8.2)都有这个问题。

可能原因是 PHP8 对文件权限和安全机制进行了优化,调整了权限管理的机制,在执行被禁用函数方面表现得更为严格和安全。而 WordPress 代码没有相应进行调整,所以在 PHP 8 环境下禁用 chmod 就会无法正常运行。

只能在 PHP8 环境下开启 chmod 来解决这个不兼容问题。

weinxin
公众号
闹着玩下网
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: