【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
概括来说,今北産業。
-
- 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_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发布了,离正式发布不远了。非常期待。