4
Help us understand the problem. What are the problem?

posted at

updated at

Organization

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

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 エラーが出るようになりました。

調べてみたら、もともと 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 がリリースされたので、いよいよリリース間近。たのしみです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
4
Help us understand the problem. What are the problem?