2016-02-29 13 views
46

私は最近、自分の開発サーバー上でPHP 7に切り替えました。これまではうまくいきました。utf8_(en | de)php7からコードが削除されましたか?

PHP 7.0.3-10+deb.sury.org~trusty+1(本日早々)に更新して以来、utf8_decodeutf8_encodeの機能にアクセスできなくなりました。しかし、PHP7の以前のバージョンではそれがありました。呼び出されると、致命的なエラーが発生します。

私はこれらの機能がでチェックされたmbstring拡張によって提供されていることを読みました。

上記の機能を再び動作させるにはどうすればよいですか?

+1

を 'mbstring'がこの機能を提供していません。奇妙なことに、それは[XML Parser Functions](http://php.net/manual/en/ref.xml.php)にリストされています。おそらく、エラーメッセージに少し詳しく説明したいのですか?私の(カスタム)PHP7のクイックテストは、 "まだ"動作していることを示しています... –

+0

完全なエラーメッセージは '致命的なエラーです:キャッチされていないエラー:未定義の関数utf8_encode()を呼び出します。私は 'mb_convert_encoding($ value、 'UTF-8')'でエンコード関数を置き換えることができましたが、私はまだエラーの原因を知りたいと思っています。 – paolo

+0

私はLDAPから得た文字列を変換する関数が必要でした。エラーメッセージについて他に何を伝えることができますか? – paolo

答えて

128

私は同じ問題を抱えていました。 php7.0-xmlパッケージをインストールするだけです。 Ubuntuの16.04:

sudo apt-get install php7.0-xml 

編集:再起動apache2の新しいパッケージをロードします。 Ubuntuで

+1

再起動するapacheは太字でなければなりません。しかし、ありがとう、これは私のために働いた。 –

+5

'utf8_encode'と' utf8_decode'は7.2からext/standardに移動されているので、その時点から常に利用可能になります(ext /標準は常に利用可能です)。 –

+0

@JoeWatkinsどこで読むことができますか? –

1

utf8_decodeとはutf8_encode関数は、PHP 7にアクセスできます。

function.utf8-encode - manual - php

のphp-xmlのパッケージは、PHPインストールに不足しているためです。

サーバでMandrakeを実行している場合は、「urpmi php-xml」と入力します。

WindowsでEASYPHPを実行しているサーバーの場合は、EASYPHPのロゴをクリックしてphp-xmlモジュールをアクティブにします。 DebianやUbuntuの試行で

apt-get install php7.0-xmlrpc 
+4

'php7.0-xmlrpc'または' php7.0-xml'、あるいはその両方? – robbash

+2

ちょうど 'php7.0-xml'は私のためのトリックをしたようでした – neilsimp1

+0

私はintalledを持っていますが、まだ関数が読み込めません –

8

、あなたはPHP7のアップグレード中に、次のメッセージが表示されました:

php7.0 (7.0.3-6) unstable; urgency=medium 

    * Several extensions have been split into separate extension packages: 
    - php-dba - Database (dbm-style) Abstraction Layer 
    - php-mbstring - Multibyte String 
    - php-soap - SOAP 
    - php-xml - DOM, SimpleXML, WDDX, XML, XMLReader and XMLWriter 
    - php-zip - Zip 
    * The new packages are not installed automatically, so you will need to 
    install them by hand, if you use the functions in those modules. 
    * Most modules that have been builtin before are now included in 
    php7.0-common package and they are enabled by default for your 
    convenience. You can disable unneede modules via phpdismod tool. 

-- Ondřej Surý <[email protected]> Mon, 22 Feb 2016 12:37:09 +0100 

ので、それが問題を引き起こしているこれらのパッケージの一つです。この場合は、php-xmlです。

The new packages are not installed automatically

あなたは(

sudo apt-get install php-xml 
sudo apache2ctl graceful 
+0

が動作しませんでした –

+0

誰かがmb_regex_encodingがphp7.0に見つからない場合は、php-mbstringをインストールしてください。 – cwhsu

-1

によって、私は同じ問題が発生したため、私のために、

sudo apt-get install php-patchwork-utf8 

とapache2のサーバーを再起動するには、問題を解決することを修正することができますUbuntu 16.04 LTS上で)。

2

あなたがCentOSの上にある場合は、次のコマンドが動作するはずは:トップの答えは私のために動作しませんでした投票したよう

yum install php-xml 
+0

... Fedoraの場合と同じ24 –

3

は、私は私のためにそれを固定(その名前で明白)がPHP7のためにさらに別のパッケージを見つけましたUbuntuの16.04 LTSで

sudo apt-get install php7.0-mbstring 
+0

単に 'sudo apt install php-mbstring'を使うだけで、バージョンの手間を省くこともできます。 –

2

、PHP 5.6で、試してみてください。

sudo apt-get install php5.6-xml 
sudo service apache2 restart 
関連する問題