【PHP8】PHP被弃用:PHP启动时,mbstring.internal_encoding的使用被弃用

在 PHP 8 中,启用 mbstring 后会显示 mbstring.internal_encoding 已弃用。

使用以下命令进入 keinos/php8-jit 的容器:
$ docker run –rm -it keinos/php8-jit /bin/sh

进入容器后,执行以下命令检查 PHP 版本:
/ $ php -v

会显示如下警告信息:
PHP Deprecated: PHP Startup: Use of mbstring.internal_encoding is deprecated in Unknown on line 0

经过对比可得到 PHP 的版本信息如下:
PHP 8.0.0-dev (cli) (built: May 21 2020 15:58:54) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies
with Zend OPcache v8.0.0-dev, Copyright (c), by Zend Technologies

概括来说,今北産業。

    1. mbstring.internal_encoding 在 PHP 8.0.0 版本开始已被移除。

需要修改 php.ini 来避免该问题。

查找设置了 mbstring.internal_encoding 的 php.ini 文件,并删除相应的项(或使用 ; 进行注释)。

具体的修改位置如下:

/usr/local/etc/php/conf.d/docker-php-enable-mb.ini
; 扩展 PHP.ini 文件以启用 mbstring。
; =========================================
; 将该文件放置在 /usr/local/etc/php/conf.d/ 目录下

zend.multibyte = On
zend.script_encoding = UTF-8
mbstring.language = Japanese
– mbstring.internal_encoding = UTF-8
+ ;mbstring.internal_encoding = UTF-8

简而言之

這是關於2020年6月左右的事情。我當時在玩使用啟用JIT功能的PHP8-dev Docker映像。

【PHP8】JIT=on の Docker を触ってみたい人。爆速だったよ。 @ Qiita

然后,从某个时候开始,出现了PHP Deprecated: PHP Startup:使用mbstring.internal_encoding已被弃用的错误。

「mbstring.internal_encoding 已经被弃用。」经过查询,原本在 PHP 5.6.0 及以后版本中,php.ini 的 mbstring.internal_encoding 设置就已经被标记为不推荐使用。

看起来,在master分支(PHP 8.0.0-dev)的提交3ca08ee(2020/03/31)中,已经删除了过时的内容,如果不进行回退,它将在PHP 8.0.0的正式版本中被删除。

https://github.com/php/php-src/commit/3ca08ee @ GitHub

也许,在 PHP 8.0.0 版本之后,除了 mbstring.internal_encoding 之外的其他废弃设置也可能被删除。

2021年3月24日,mbstring的设置选项目前被认为是不推荐使用的。

名前変更履歴変更予定mbstring.http_inputPHP 5.6.0 で非推奨
mbstring.http_outputPHP 5.6.0 で非推奨
mbstring.internal_encodingPHP 5.6.0 で非推奨PHP 8.0.0 以降で削除予定(3ca08eeでは削除済み)mbstring.func_overloadPHP 7.2.0 で非推奨PHP 8.0.0 で削除されました。
    https://www.php.net/manual/ja/mbstring.configuration.php

2020年6月23日,PHP8-alpha1发布了,离正式发布不远了。非常期待。

广告
将在 10 秒后关闭
bannerAds