Komponist: Die angeforderte PHP-Erweiterung ext-intl * fehlt auf Ihrem System

74

Ich versuche, composer.jsonDatei zu verwenden . Wenn ich jedoch versuche, den Befehl ' composer install' in meinem auszuführen path/project/, wird eine Fehlermeldung angezeigt:

Geben Sie hier die Bildbeschreibung ein

Ich habe mein wampfür ' extension=php_intl.dll' bereits konfiguriert und alles icu*.dllin ' D:\wamp\bin\apache\apache2.2.22\bin' von ' D:\wamp\bin\php\php5.3.13' kopiert und es wird angezeigt in phpinfo():

Geben Sie hier die Bildbeschreibung ein

ohne Kopie icu*.dllfunktioniert auch und zeigt in phpinfo();

Bitte lassen Sie mich wissen, wenn ich intlauf meinem wampund composer installauf meinem PC installiert habe, warum ich diesen Fehler erhalte. wirklich, es ist so nervig.

Hier sind meine Details:

  1. Betriebssystem: Windows 7 (64)
  2. PHP: 5.3.13
  3. Apache: 2.2.22
  4. Composer: Wird von einer ausführbaren Datei installiert
  5. Birne: installiert (neueste)
  6. PHPUnit: installiert (aktuell)

Mein composer.jsonist wie folgt:

{
    "name" : "sebastian/money",
    "description" : "Value Object that represents a monetary value (using a currency's smallest unit)",
    "keywords" : ["money"],
    "homepage" : "http://www.github.com/sebastianbergmann/money",
    "license" : "BSD-3-Clause",
    "authors" : [{
            "name" : "Sebastian Bergmann",
            "email" : "[email protected]"
        }
    ],
    "require" : {
        "php" : ">=5.3.3",
        "ext-intl" : "*"
    },
    "require-dev" : {
        "phpunit/phpunit" : "~4.0"
    },
    "autoload" : {
        "classmap" : [
            "src/"
        ]
    },
    "extra" : {
        "branch-alias" : {
            "dev-master" : "1.3.x-dev"
        }
    }
}

Lassen Sie mich wissen, wenn weitere Details erforderlich sind.

Jedes Feedback / jede Hilfe wäre sehr dankbar.

Neeraj Singh
quelle

Antworten:

86

Das Problem mit wamp ist normalerweise, dass es eine andere php.ini für Kommandozeilen-PHP verwendet als für das Web / Apache-PHP. Sie sehen also die intl-Erweiterung in phpinfo () im Browser, aber wenn Sie php -min der Befehlszeile ausführen , sollten Sie sehen, dass die Liste der dortigen Erweiterungen intl nicht enthält.

Sie können überprüfen, ob php -iüber der Ausgabe angegeben ist, woher die INI-Datei geladen wird. Stellen Sie sicher, dass Sie die intl-Erweiterung in dieser INI-Datei aktivieren und loslegen können.

Für die Version php.ini 5.6 (Version mit php -v überprüfen)

;extension=php_intl.dll 
; remove semicolon
extension=php_intl.dll

Für php.ini 7. * Version

;extension=intl
; remove semicolon
extension=intl
Seldaek
quelle
7
Vielen Dank Seldaek, Sie haben Recht, es gibt verschiedene PHP.ini für CLI. Es ist 'D: \ wamp \ bin \ php \ php5.3.13 \ php.ini' und für WEB 'D: \ wamp \ bin \ apache \ apache2.2.22 \ bin \ php.ini'. Also musste ich auch die CLI php.ini bearbeiten. Jetzt geht es. Wenn jemand wissen möchte, welche php.ini-CLI verwendet wird, führen Sie einfach php -i auf CMD oder besser $ php -i> php.txt aus. Die Ausgabe wird in der Datei php.txt gespeichert. Anschließend können Sie den Pfad php.ini unter 'Loaded Configuration File =>' ermitteln. Ciya !! und nochmals vielen Dank !!
Neeraj Singh
2
Danke vielmals. Sie haben Stunden gespart.
Bhavik Shah
4
php --inizeigt die Namen der CLI-Konfigurationsdateien an.
Mukesh Chapagain
Auf Debian / Ubuntu-ähnlichen Systemen können wir die mbstringErweiterung mit dem folgenden Befehl installieren :sudo apt-get install php-mbstring
Sasha MaximAL
1
In meinem Fall auf Ubuntu 16.04 läuft ein LAMP - Stack: Un-Kommentar (dh das Suffix entfernen, während das Symbol) extension=php_intl.dllin der php.ini von web / Apache PHP && Lassen Sie die php.ini von php-cli , wie es war (weil das gleiche zu tun für PHP-CLI PHP durch diesen Fehler im Terminal gemacht: PHP Warnung: PHP Startup: Dynamische Bibliothek kann nicht geladen werden ...) || Und danach hat alles gut funktioniert!
Vinay Vissh
96

Ich bin auf dieses Problem mit dem Mac gestoßen und habe es mithilfe der --ignore-platform-reqsOption behoben .

composer install --ignore-platform-reqs
Himmel
quelle
Eigentlich hat es bei mir besser geklappt als bei den anderen Lösungen. Möglicherweise muss hinzugefügt werden, dass --ignore-platform-reqs eine Komponistenoption für diejenigen ist, die es auch versuchen
möchten
Fertig auf Lubuntu - es gibt nichts Legitimeres als das
Daniel Warui
30

Unter Linux (Debian Jessie zum Beispiel):

apt-get install php7.0-intl

Wenn Sie den Auftrag ausführen, wird eine simbolische Verknüpfung hergestellt.

Anibal Marques dev
quelle
Vielen
CybeX
Es sollte beachtet werden, dass die Version von PHP, für die Sie dies installieren möchten, angepasst werden sollte. Beispiel, wenn Sie es für PHP 7.3 installieren möchten, würden Sie tun: sudo apt-get install php7.3-intl
Uriahs Victor
16

Befolgen Sie die nachstehenden Anweisungen, um die intl-Erweiterung zu aktivieren.

Sie müssen die Erweiterung aktivieren, indem Sie die folgende Zeilenerweiterung = php_intl.dll in der Datei C: \ xampp \ php \ php.ini auskommentieren. Sobald Sie die Erweiterung = php_intl.dll auskommentieren, müssen Sie den Apache-Server über das XAMPP-Kontrollfeld neu starten.

//about line 998
;extension=php_intl.dll 
change as
extension=php_intl.dll

(Hinweis: Die Datei php.ini befindet sich hauptsächlich im folgenden Verzeichnis C: \ xampp \ php)

Starten Sie xampp neu

Matinict
quelle
4

entferne sie einfach

"ext-intl" : "*"

aus Ihrer composer.json-Datei.

Da sich die IDE bei einigen Hilfsfunktionen manchmal darüber beschwert, dass die Erweiterung in der Datei composer.json fehlt. Drücken Sie sofort Alt + Eingabetaste, um es dem Komponisten hinzuzufügen. Das bedeutet aber nicht, dass der Komponist sie mitzählt. Der Komponist wird sich das nächste Mal beschweren, während er einige Operationen ausführt. Damit wir Alt + Enter nicht blind eingeben, sondern manuell in Composer installieren composer install <package-name>.

Da Sie es meiner Meinung nach manuell eingegeben haben, sollten Sie es entfernen und dann ordnungsgemäß installieren composer install <package-name>

Oder Sie können ausführen, composer updateum die hinzugefügten Abhängigkeiten in zu zählen.

SKR
quelle
Vielen Dank für dieses Code-Snippet, das möglicherweise nur begrenzte, sofortige Hilfe bietet. Eine richtige Erklärung würde ihren langfristigen Wert erheblich verbessern, indem sie zeigt, warum dies eine gute Lösung für das Problem ist, und es für zukünftige Leser mit anderen, ähnlichen Fragen nützlicher machen. Bitte bearbeiten Sie Ihre Antwort, um eine Erklärung hinzuzufügen, einschließlich der von Ihnen getroffenen Annahmen.
Dwhitz
was .. aber es ist Arbeit: D
Dawam Raja
1

Dies ist eine etwas alte Frage, aber ich hatte das gleiche Problem auf dem Linux-Basisserver bei der Installation von Magento 2.

Wenn ich von meinem Magento-Root-Verzeichnis aus feuere composer updateoder composer installbefehle. Es wurde unter Fehler abgefeuert.

Problem 1
    - The requested PHP extension ext-intl * is missing from your system. Install or enable PHP's intl extension.
  Problem 2
    - The requested PHP extension ext-mbstring * is missing from your system. Install or enable PHP's mbstring extension.
  Problem 3
    - Installation request for pelago/emogrifier 0.1.1 -> satisfiable by pelago/emogrifier[v0.1.1].
    - pelago/emogrifier v0.1.1 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
   ...

Dann suchte ich mit den folgenden Befehlen nach den verfügbaren intl & intl-Erweiterungen.

yum list php*intl
yum install php-intl.x86_64  

yum list php*mbstring
yum install php-mbstring.x86_64

Und es hat das Problem behoben.

Rohan Patil
quelle
1

Machen Sie sich keine Sorgen, wenn beim Ausführen des Composer-Installationsbefehls dieser Fehler auftritt. Zu befolgende Schritte und Anforderungen:

  • Schritt 1: Wechseln Sie zu einem Serverordner wie xampp (oder) wampp usw.
  • Schritt 2: Öffnen Sie den PHP-Ordner darin und gehen Sie zum Ext-Ordner.
  • Schritt 3: Wenn Sie eine Datei mit dem Namen php_intl.dll finden, ist dies kein Problem.

Gehen Sie einfach zur Datei php.ini und kommentieren Sie die Zeile aus

Von:

;extension=php_intl.dll

Zu:

extension=php_intl.dll
  • Schritt 4: Starten Sie xampp neu, das war's

Hinweis: Wenn Sie keine der Dateien mit dem Namen php_intl.dll finden , müssen Sie die PHP-Version aktualisieren.

Manojkiran.A
quelle
Ich habe XAMPP v3.2.4 unter Windows. Ich habe php_intl.dll im 'ext Ordner'. Aber in der Datei php.ini gibt es die Zeile '; extension = intl'. Ich habe sie auskommentiert und folge deinen Anweisungen. Es gibt mir einen Systemfehler (MSVCP140.dll fehlt auf Ihrem Computer).
Herr Aniket
1

(mit xampp server) öffne php.ini in " . \ xampp \ php "

ändern ; Erweiterung = intl zu Erweiterung = intl

huu duy
quelle
0

Kommentieren Sie diese Zeile einfach aus (um sie zu finden, suchen Sie einfach diese Zeile im Editor):

;extension=php_sockets.dll

(Entfernen Sie das Semikolon, um den Kommentar zu entfernen.)

Für mich ist es nicht erforderlich, XAMPP neu zu starten (in Ihrem Fall WAMP). Aber wenn es nicht funktioniert hat, starten Sie es neu.

MAChitgarha
quelle
0

Für die Version php.ini 5.6 (Version mit php -v überprüfen)

; extension = php_intl.dll; Entfernen Sie das Semikolon und behalten Sie die Erweiterung = php_intl.dll bei

Für php.ini 7. * Version

; extension = intl; Entfernen Sie das Semikolon und behalten Sie diese Erweiterung bei = intl

Hinweis - Stellen Sie danach sicher, dass Sie Xampp, Wamp Server auf Ihrem lokalen Computer neu starten.

Munazzil
quelle
0

In der neuesten XAMPP-Version; Sie müssen nur intl (Zeile 912) in der Datei php.ini finden. Ändern; Erweiterung = intl Zu Erweiterung = intl

Parth Patel
quelle