私はこれと全く同じコードを長年使用してきましたが、一度も問題はありませんでした。突然動作しなくなりました。
この問題についてインターネットで読んだところ、PHP 5.3 以降
をインストールするとともに、PHP intl
プラグインをインストールする必要があるようです。両方持っていますが、以下の関数を使用するたびに、「致命的エラー: クラス 'NumberFormatter' が見つかりません」エラーが発生します
:
function format_item($value) { $format = new NumberFormatter('en_US', NumberFormatter::CURRENCY); return $format->formatCurrency($value, 'AUD'); }
また、これは PHP intl
プラグインがインストールされていることを示す php.ini
ファイルの一部です。
[intl] intl.default_locale = fr_FR ; このディレクティブを使用すると、何らかのエラーが発生したときに PHP エラーを生成できます。 ; intl 関数内で発生します。値は生成されるエラーのレベルです。 ; デフォルトは 0 で、エラーは発生しません。 intl.error_level = E_WARNING
php.ini
に extension=php_intl.dll
も追加しました。これも私のディレクトリにあります。
このエラーが発生するのはなぜですか?
必要なものは次のとおりです:
リーリーphp.ini を変更したり、他に何もする必要はありません。 (PHP 7 を備えた Ubuntu 16.04 でテスト済み)。
ここで最も一般的な答えは、.dll ファイルのコメントを解除するというものですが、Windows サーバーを使用している場合を除き、これでは何も解決されません。
これは非常に奇妙な問題のようですが、私は次の方法で解決しました。
私はこのチュートリアルを通じて Wamp の PHP をアップグレードしました。
php.ini
のタイムゾーン設定も更新しました。アップグレードしたらうまくいかなかったので、以前の PHP バージョンに戻したら問題は解決しました。なぜこれで問題が解決するのかまったくわかりませんが、私にとってはうまくいきました。