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