LoginSignup
6

【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 がリリースされたので、いよいよリリース間近。たのしみです。

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
What you can do with signing up
6