webentwicklung-frage-antwort-db.com.de

Apache ist "Modul kann nicht initialisiert werden", da die API des Moduls und PHP nicht übereinstimmt, nachdem das geändert wurde PHP Aufbau

php -v gibt das an

PHP Warning:  PHP Startup: memcache: Unable to initialize module
Module compiled with module API=20060613
PHP    compiled with module API=20090626
These options need to match in Unknown on line 0
PHP Warning:  PHP Startup: memcache: Unable to initialize module
Module compiled with module API=20060613
PHP    compiled with module API=20090626
These options need to match in Unknown on line 0
bogus test name tests/

ps. Ich habe ein Upgrade von PHP 5.2 auf 5.3. vorher hat alles gut geklappt.

35
soshial

Wenn Sie die Version von PHP aktualisieren (insbesondere wenn Sie von Version XY zu Version XZ wechseln) , müssen Sie ) das PHP aktualisieren. Erweiterungen auch.


Dies liegt daran, dass PHP - Erweiterungen in C entwickelt wurden und den Interna von PHP "nahe" sind. Das bedeutet, dass die Erweiterung geändert werden muss, wenn sich die APIs dieser Interna ändern neu kompiliert werden, um die neuen Versionen zu verwenden.

Und zwischen PHP 5.2 und PHP 5.3 wurden, soweit ich mich erinnere, einige Änderungen an den internen Datenstrukturen vorgenommen, die von der PHP - Engine verwendet wurden - was bedeutet, dass Erweiterungen neu erstellt werden müssen -compiled, um diese neue Version dieser Datenstrukturen abzugleichen.


Wie Sie Ihre PHP - Erweiterungen aktualisieren, hängt davon ab, welches System Sie verwenden.

Wenn Sie Windows verwenden, finden Sie den .dll für einige Erweiterungen hier: http://downloads.php.net/pierre/
Weitere Informationen zu den verschiedenen Versionen finden Sie in der linken Leiste von windows.php.net .

Wenn Sie unter Linux arbeiten, müssen Sie entweder:

  • Überprüfen Sie, was Ihre Distribution bietet
  • Oder verwenden Sie den Befehl pecl, um die Quellen der betreffenden Erweiterungen erneut herunterzuladen und neu zu kompilieren.
34
Pascal MARTIN

gerade 

pecl uninstall module_name

dann

pecl install module_name
7
Bảo Nam

Ihr Problem liegt im Paket php5-dev. Ich denke, Sie sind von PHP5.2 einer älteren Linux-Version zu PHP5.3 gegangen. Ich tat dasselbe und als ich PHP 5.3 installieren konnte, gab es einen Konflikt mit php5-dev. Aus irgendeinem Grund wird es nicht auf die neue Version aktualisiert. Ich weiß nicht, warum das so ist und es ist mir egal, aber dies macht Ihre Erweiterung mit der älteren API-Version kompiliert, während PHP ofc mit der neueren API-Version ist. Was ich getan habe, um dieses Problem zu lösen, war:

Ich entfernte php5-dev mit Sudo apt-get remove php5-dev, dann lief ich Sudo apt-get autoremove, um die Reste loszuwerden, die mir Schwierigkeiten bereiteten, und danach habe ich gerade php5-dev wieder installiert. Sudo apt-get install php5-dev.

Nachdem dies erledigt war, entfernte ich meinen Memcache mit Sudo pecl uninstall memcache und installierte ihn erneut Sudo pecl install memcache. Jetzt hatten sowohl das Modul als auch das PHP die gleiche API-Version, also wusste ich sofort, dass ich das Problem gelöst hatte :)

Ich hoffe es hilft.

6

Es ist möglich, dass die Module installiert sind, aber Ihre PHP.ini verweist immer noch auf ein altes Verzeichnis.

Überprüfen Sie den Inhalt von/usr/lib/php/extensions. In meinem gab es zwei Verzeichnisse: no-debug-non-zts-20060613 und no-debug-non-zts-20060613. Ändern Sie in Zeile 428 Ihrer php.ini Folgendes:

extension_dir = "/ usr/local/lib/php/extensions/kein debug-non-zts-20060613"

zu

extension_dir = "/ usr/local/lib/php/extensions/kein debug-non-zts-20090626"

Starten Sie dann Apache neu. Dies sollte das Problem beheben.

3
apkostka

Ich hatte lange Zeit mit diesem Problem zu kämpfen und stellte fest, dass beim Ausführen von configure einfach der Pfad an das richtige php-config-Tool übergeben wird.

In meinem Fall war es so 

./configure --with-php-config=/usr/local/zend/bin/php-config 

... Wenn Sie sich nicht sicher sind, führen Sie einen locate php-config auf Ihrem Computer aus und finden Sie den richtigen unter den verschiedenen installierten Versionen. 

Hoffe, das hilft jemandem in der Zukunft.

PS. Mein Standard php-config wurde auf 20090926 gesetzt. Dies ist PHP 5.3. Diejenige, die ich manuell als Parameter für ./configure was für PHP 5.4 eingegeben habe (2010 ...) 

2
Andrew

Ich hatte ein ähnliches Problem nach einem Upgrade von PHP 5.5 auf PHP 5.6. Die phpize- und php-config-Bibliotheken, die zum Kompilieren der phalcon-Erweiterung verwendet werden, waren noch die von PHP 5.5. Ich musste den folgenden Befehl ausführen: 

Sudo apt-get install php5.6-dev

Es wird ein langer Stacktrace geben, die wichtigsten Informationen, die ich gesehen habe, waren:

update-alternatives: using /usr/bin/php-config5.6 to provide /usr/bin/php-config (php-config) in auto mode
update-alternatives: using /usr/bin/phpize5.6 to provide /usr/bin/phpize (phpize) in auto mode

Ich hoffe das hilft jemandem.

1
Goke Obasa

Ich hatte diesen Teil in meiner php.ini aktiviert

 extension=php_memcache.dll
    [Memcache]
    memcache.allow_failover = 1
    memcache.max_failover_attempts=20
    memcache.chunk_size =8192
    memcache.default_port = 11211

Nach dem Kommentieren dieser Zeilen wurde Composer in meinem Windows 10 installiert

1
vicky shrestha

Dieses Problem ist mir gerade passiert und wurde durch einfaches Erhöhen von Memory_limit von 32 M auf 64 M gelöst. Sie können den Wert in der Datei anpassen, in der die php.ini vorhanden ist

suchen Sie nach php.ini Wählen Sie dann die richtige Datei aus und suchen Sie nach memory_limit. Nach dem Ändern von müssen Sie den Apache/etc/init.d/httpd neu starten

Alles Gute. 

0

In meinem Fall in php.ini

[CLDbg]
extension=php_cl_dbg_5_3_VC9.dll
clport=6000

Ich habe Codelobster entfernt, das eine andere Version von PHP unterstützt. Daher müssen Sie Folgendes aktualisieren:

[CLDbg]
;extension=php_cl_dbg_5_3_VC9.dll
;clport=6000
0
xsor

Ich würde den gleichen Fehler haben, auch nachdem ich die Module neu kompiliert hatte.

Aber ich habe es gelöst, du musst nur den absoluten Pfad deines PHP angeben.

0
Hugo Bulthé

Bevor Sie phpize machen, sollten Sie Ihren Pfad ($ PS1) so aktualisieren, dass er auf das neue PHP verweist! phpize verwendet Ihre Umgebung, und wenn Sie noch Spuren Ihrer alten PHP in Ihrem Pfad oder in anderen Teilen der Umgebung haben, werden die Dinge haarig!

0

Hier ist derjenige, der mit PHP 5.5 arbeitet. Laden Sie xampp 1.8.3 von hier herunter und laden Sie memcache dll von hier herunter.

0
user2289259

In meinem Fall habe ich lnmp verwendet, um PHP mit Version 5.4.45 zu installieren. Aber weil ich php5-dev nach lnmp installiert habe (was vermutlich nicht erforderlich ist, wenn Sie lnmp installiert haben), zeigen meine phpize und php-config beide auf ältere Versionstools als php.
Ich löste dies, indem ich den Softlink von /etc/alternatives/phpize und /etc/alternatives/php-config in /usr/local/php/bin/phpize und /usr/local/php/bin/php-config änderte.
Ich hoffe, das ist hilfreich.

0
YouCL