LoginSignup
14
7

【PHP8】PHP Deprecated: PHP Startup: Use of mbstring.internal_encoding is deprecated

Last updated at Posted at 2020-05-21

PHP 8 で、mbstring を有効にすると mbstring.internal_encoding is deprecated と表示される。

$ docker run --rm -it keinos/php8-jit /bin/sh
/ $ php -v
PHP Deprecated:  PHP Startup: Use of mbstring.internal_encoding is deprecated in Unknown on line 0

Deprecated: PHP Startup: Use of mbstring.internal_encoding is deprecated in Unknown on line 0
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

TL; DR (今北産業)

  1. mbstring.internal_encoding は PHP 8.0.0 から削除されました。

  2. php.ini を修正して回避します。

    • mbstring.internal_encoding を設定している php.ini ファイルを探し、mbstring.internal_encoding の項目を削除(or ; でコメントアウト)します。
  3. 具体的な修正箇所は以下のとおり:

    /usr/local/etc/php/conf.d/docker-php-enable-mb.ini
    ; Extended PHP.ini file to enable mbstring.
    ; =========================================
    ; Place this file under /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
    

TS; DR

2020 年の 6 月ごろの話しです。JIT を有効にした PHP8-dev の Docker イメージで遊んでいました。

すると、ある時から PHP Deprecated: PHP Startup: Use of mbstring.internal_encoding is deprecated エラーが出るようになりました。

mbstring.internal_encoding は廃止になりました」とのこと。調べてみたら、もともと php.inimbstring.internal_encoding 設定は PHP 5.6.0 以降から非推奨でした。

どうやら、master ブランチ(PHP 8.0.0-dev)のコミット 3ca08ee(2020/03/31)で削除され Deprecated となり、このまま差し戻されなければ PHP 8.0.0 の正式リリースで削除されますました。

おそらく、mbstring.internal_encoding 以外の非推奨設定も PHP 8.0.0 を機に削除されるかもしれません。

2021/03/24 現在、非推奨とされる mbstring の設定項目。

名前 変更履歴 変更予定
mbstring.http_input PHP 5.6.0 で非推奨
mbstring.http_output PHP 5.6.0 で非推奨
mbstring.internal_encoding PHP 5.6.0 で非推奨 PHP 8.0.0 以降で削除予定(3ca08eeでは削除済み)
mbstring.func_overload PHP 7.2.0 で非推奨 PHP 8.0.0 で削除されました。

2020/06/23 に PHP8-alpha1 がリリースされたので、いよいよリリース間近。たのしみです。

14
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
7