Ich habe mein MacBook auf Mavericks aktualisiert und meine Entwicklungsumgebung ruiniert. Das Problem, das ich gerade habe, ist, dass mein Pear/Pecl immer noch versucht, für meine vorherige (5.3) Version von PHP anstelle von Version 5.4 zu installieren.
PHP-Version:
$ php -v
PHP 5.4.17 (cli) (built: Aug 25 2013 02:03:38)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
Birne
$ pear version
PEAR Version: 1.9.4
PHP Version: 5.4.17
Zend Engine Version: 2.4.0
Running on: Darwin MBP-retina.local 13.0.0 Darwin Kernel Version 13.0.0: Thu Sep 19 22:22:27 PDT2013; root:xnu-2422.1.72~6/RELEASE_X86_64 x86_64
Wenn ich apc mit installiere
$ sudo pecl install apc
downloading APC-3.1.13.tgz ...
Starting to download APC-3.1.13.tgz (171,591 bytes)
.....................................done: 171,591 bytes
55 source files, building
running: phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
...
Build process completed successfully
Installing '/usr/local/Cellar/php53/5.3.26/include/php/ext/apc/apc_serializer.h'
Installing '/usr/local/Cellar/php53/5.3.26/lib/php/extensions/no-debug-non-zts-20090626/apc.so'
install ok: channel://pecl.php.net/APC-3.1.13
Extension apc enabled in php.ini
Und aktivieren Sie das apc-Modul in meiner php.ini php -v ändert sich wie folgt:
$ php -v
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20100525/apc.so' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20100525/apc.so, 9): image not found in Unknown on line 0
PHP 5.4.17 (cli) (built: Aug 25 2013 02:03:38)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
Also installiert pecl meine apc-Erweiterung in /usr/local/Cellar/php53/5.3.26/lib/php/extensions/no-debug-non-zts-20090626 und php erwartet es in /usr/lib/php/extensions/no-debug-non-zts-20100525/.
Das einfache Erstellen eines Symlinks führt zu folgendem Fehler:
$ php -v
PHP Warning: PHP Startup: apc: Unable to initialize module
Module compiled with module API=20090626
PHP compiled with module API=20100525
These options need to match
in Unknown on line 0
PHP 5.4.17 (cli) (built: Aug 25 2013 02:03:38)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
Das ist also keine Lösung.
Kann mich jemand in die richtige Richtung weisen? Ich habe wirklich keine Ahnung, was hier los ist.
Layke
In meinem Fall habe ich versucht, Gearman zu installieren.
pecl install gearman würde es falsch installieren.
php -i würde zeigen:
PHP Extension => 20100525
Pecl würde jedoch installieren mit:
PHP Api Version: 20090626
Nachdem ich meine Konfigurationseinstellungen geändert habe, verwenden Sie:
WARNUNG: php_bin /usr/bin/php5 scheint ein Suffix 5 zu haben, aber die Konfigurationsvariable php_suffix stimmt nicht überein
Sie können dies beheben, indem Sie die Konfigurationseinstellung verwenden:
Zusätzliche Korrektur
sudo pear config-set php_suffix 5
Warum war das ein Problem?
Bei mir ist dieses Problem aufgetreten, weil ich ein benutzerdefiniertes PPA hinzugefügt und PHP neu installiert habe. Dies bedeutete, dass meine vorherige Installation von php5-dev nicht synchron war.
Wenn Sie jemals in die gleiche Situation geraten, möchten Sie vielleicht einfach weglaufen.
Alternativ können Sie die Quelle herunterladen und phpize ausführen.
Danke – das Entfernen und Neuinstallieren von php5-dev hat den Trick für mich getan. Puh.
– Erwin Wessels
21. April 2016 um 5:51 Uhr
Diese Antwort hat mir sehr geholfen, ein etwas anderes Problem zu lösen
– Oleg Abrazhaev
6. November 2016 um 10:38 Uhr
Ich verstehe den Mac-Hype nicht. Warum kannst du nicht einfach eine Datei herunterladen und dort einfügen??
– Kapitän Hypertext
22. Februar 2017 um 13:52 Uhr
Ich musste auch laufen sudo pear config-set php_ini /etc/php.ini — pecl hat anscheinend die Konfiguration von pear unsichtbar verwendet.
– Ben Klar
21. April 2018 um 19:39 Uhr
Du hast mein Leben gerettet sudo pear config-set php_suffix 7.3 Das ist für mich die beste Lösung.
– giapnh
5. März 2020 um 4:41 Uhr
Die Lösung war ziemlich einfach. Ich musste Änderungen an meiner Pecl-Konfiguration vornehmen. Es stellte sich heraus, dass diese beiden Befehle den Zweck erfüllten:
pecl hat die falsche phpize verwendet. Es gab zwei Versionen von phpize. Dasselbe gilt für meine php.ini-Datei.
Oh mein Gott, danke. Ich habe 12 Stunden lang gegen dieses Problem gekämpft und konnte nicht herausfinden, warum pecl nicht für PHP 5.5 erstellt wurde. Das Ausführen dieser beiden Befehle hat das Problem behoben. Du hast mir buchstäblich den Arsch gerettet.
– atxpunkrock
8. Januar 2015 um 6:48 Uhr
Ben Johnson
Keine der anderen Antworten scheint (noch) darauf abzuzielen, mehrere “co-installierbare” PHP-Versionen zu haben, während eine bestimmte Erweiterung für alle installierten PHP-Versionen erstellt werden soll.
Um das Szenario zu veranschaulichen, in dem ich mich befinde (ich verwende die Ondrej Surý PHP PPAs für Ubuntu 16.04 LTS):
pecl install extension-name macht den Job für PHP 7.1, aber nicht die anderen.
Die anderen Antworten weisen darauf hin, dass eine Deinstallation/Neuinstallation zwar möglich ist php*-devwürde ich lieber nicht, angesichts der absichtlich mitinstallierten PHP-Versionen auf dem System.
Eine Lösung besteht darin, die Erweiterung für jede auf dem System vorhandene Version zu erstellen.
Dieses Snippet demonstriert das Erstellen mit PHP 5.6, aber ich habe dasselbe für 7.0 und 7.1 gemacht und die Schritte sind dieselben.
Dieses Beispiel zeigt das Klonen der Erweiterung aus einem Git-Repository, aber man kann jedes Quellverzeichnis verwenden.
(# gibt an, dass Sie root oder use sein müssen sudo)
# apt-get install php-dev
# cd ~
# git clone https://github.com/vendor/extension-name
# cd ./extension-name
# phpize5.6
# ./configure --with-php-config=/usr/bin/php-config5.6
# make clean
# make
# make install
# ln -s /etc/php/5.6/mods-available/extension-name.ini /etc/php/5.6/fpm/conf.d/20-extension-name.ini
# service php5.6-fpm reload
Zu groß.
Es gibt eine Möglichkeit, die PHP-Version unter Ubuntu zu wechseln:
Wenn jemand die am höchsten bewertete Antwort versucht hat, aber immer noch nicht funktioniert. Hier sind die Schritte zum Debuggen:
Entfernen Sie alle anderen PHP-Versionen, insbesondere das Dev-Paket (in meinem Fall php7.2-dev)
Installieren Sie das dev-Paket für die aktuelle Version (php7.3-dev)
Und im Grunde ist es das.
Grund:
PECL erfordert phpize, das Teil des php-dev-Pakets ist. Wenn phpize für die aktuelle Version nicht gefunden wird, wird nach der vorherigen Version gesucht, was zu einer älteren PHP-API-Nummer führt
Dies ist eigentlich der richtige Weg, um dies zu beheben, anstatt die Konfiguration durcheinander zu bringen, was meistens zu mehr Problemen führt.
– Vishnu Nair
30. August 2017 um 10:58 Uhr
Unter Ubuntu 16.04 bei Verwendung von ppa:ondrej/php (und wahrscheinlich andere Alternativen), um pecl/php-Erweiterungen für PHP 5.6 zu installieren, müssen Sie Folgendes tun:
Mir ist aufgefallen, dass, wenn keine Erweiterung in php.ini aktiviert ist, pecl die Zeile hinzufügen extension="xxx.so" am Anfang der php.ini, also verschiebe ich es normalerweise manuell an das Ende der Datei und danach ist es für die nächsten Erweiterungen in Ordnung.
Abhängig davon, was Sie auf Ihrem System haben, kann es notwendig sein, Ihre Änderungen nach der Installation rückgängig zu machen, insbesondere für die Verwendung der Standard-PHP-Version mit Update-Alternativen
10985800cookie-checkpecl installiert für frühere PHP-Versionenyes