web-dev-qa-db-ja.com

Windows 10のXampp Intl拡張機能はインストールできません

Xgenp(php 7.2.5)にMegento 2をインストールしようとすると、インストールプロセスでIntl拡張機能のインストールエラーが見つかります

enter image description here

Php.iniで;extension=intlをすべてextension=intlにする

また、すべてのファイルicu*.dllファイルをxampp/phpからxampp/php/extおよびxampp/Apache/pinディレクトリにコピーし、もちろんApacheを再起動しました。

enter image description here

MSVCP110.dllもダウンロードして、C:\Windows\System32に貼り付けます

PHPシステム変数のパスも確認しましたが、問題ありません。

しかし、これまではIntl拡張機能は機能しませんでした

何か助け?

8
Gouda Elalfy

Xamppセットアップファイル名にはVCXXが含まれます。たとえば、xampp-win32-7.2.5-0-VC15-installer.exe、VC15は、PHP Visual Studio 2017でコンパイルされているため、Microsoft Visual C++ Redistributable for Visual Studio 2017をインストールして、 PHPおよび拡張機能はスムーズに動作していますが、すでにインストール済みのVC14またはVisual C++ Redistributable 2015で十分な場合があります。

リストを表示してVisual C++再頒布可能パッケージをダウンロードできます here

3
ewwink

Php.iniファイルの[intl]セクションを変更する必要があります-

セクションの下に変更

________________________________

[intl]

; intl.default_locale =

;このディレクティブを使用すると、エラーが発生したときにPHPエラーを生成できます。

; intl関数内で発生します。値は、生成されたエラーのレベルです。

;デフォルトは0で、エラーは発生しません。

; intl.error_level = E_WARNING

; intl.use_exceptions = 0

____________________________________

To

________________________________

[intl]

intl.default_locale = en_utf8

;このディレクティブを使用すると、エラーが発生したときにPHPエラーを生成できます。

; intl関数内で発生します。値は、生成されたエラーのレベルです。

;デフォルトは0で、エラーは発生しません。

intl.error_level = E_WARNING

; intl.use_exceptions = 0

____________________________________

3
sanjaya

国際化拡張機能(さらにIntlと呼ばれる)は"ICUライブラリのラッパーであり、PHPプログラマーがさまざまなロケール対応操作を実行できるようにしますが、これらに限定されません。フォーマット、音訳、エンコーディング変換、カレンダー操作- http://php.net/manual/en/intro.intl.php

Windowsベースのサーバーの場合:

Php_intl.dllファイルがphp extensionsディレクトリにあることを確認してください

  • 個別にインストールされたPHPの場合:C:\ path\to\php\ext \
  • xamppの場合:C:\ path\to\xampp\php\ext
  • (注:ドライブ文字は異なる場合があります)

ファイルが存在する場合:

  • 設定ファイル(php.ini、通常はphp実行可能ファイルと同じフォルダーにあります)を検索して開きます。これはphp --iniを実行することで簡単に見つけることができます
  • 「extension = php_intl.dll」という行が存在し、コメントされていないことを確認してください
  • Webサーバー(通常はApache)を再起動します。
  • Phpinfo()を使用して拡張機能が有効になっているかどうかを確認するか、cmdでphp - meを実行します

ファイルが存在しない場合:

  • 「php -v」コマンドを実行して、phpのバージョンを確認します
  • PHPダウンロードページ(TS/NTS、x86/x64)から、あなたに対応するPHPバージョンをダウンロードしてください。
    • Phpのスレッドセーフティを見つけるには、次を実行します:php -i | findstr “Thread”、xamppに付属するバージョンは通常Thread Safety => enabledです。
  • そのバージョンのextフォルダーでphp_intl.dllファイルを検索し、php\extフォルダーにコピーします
  • 上記のファイルが存在する場合の手順を実行します。

トラブルシューティング

一部のWebサーバーは、PHP実行可能ファイルの横にあるphp.iniを使用しないため、混乱しています。実際のphp.iniの場所を確認するには、phpinfo()でそのパスを探します:またはコマンド実行でphp --ini

Configuration File (php.ini) Path: C:\WINDOWS
Loaded Configuration File:         C:\xampp\php\php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

拡張機能をアクティブ化した後、php.iniを保存し、Webサーバーを再起動して、phpinfo()を再度確認します。これで、新しい拡張に独自のセクションができるはずです。

拡張機能がphpinfo()に表示されない場合は、ログを確認して問題の原因を確認する必要があります。

コマンドライン(CLI)からPHPを使用している場合、拡張機能の読み込みエラーは画面で直接読み取ることができます。

PHPをWebサーバーで使用している場合、ログの場所と形式はソフトウェアによって異なります。Webサーバーのドキュメントを読んで、ログの場所を確認してください。 PHP自体で行います。

一般的な問題は、DLLの場所、php.ini内の「extension_dir」設定の値、およびコンパイル時の設定の不一致です。

問題がコンパイル時の設定の不一致にある場合は、おそらく正しいDLLをダウンロードしていません。適切な設定で拡張機能をもう一度ダウンロードしてみてください。繰り返しになりますが、phpinfo()は非常に役立ちます。