web-dev-qa-db-fra.com

Apache est "Impossible d'initialiser le module" car son module et l'API de PHP ne correspondent pas après la modification PHP configuration

php -v donne ceci

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. Je suis passé de PHP 5.2 à 5.3. avant cela tout fonctionnait bien.

35
soshial

Lorsque vous mettez à jour la version de PHP (surtout lorsque vous passez de la version X.Y à la version X.Z)} _, , vous devez également mettre à jour les extensions PHP.


C'est parce que les extensions PHP sont développées en C et sont "proches" des éléments internes de PHP - ce qui signifie que si les API de ces éléments internes changent, l'extension doit être ré -compiled, pour utiliser les nouvelles versions.

Et, entre PHP 5.2 et PHP 5.3, si je me souviens bien, il y a eu quelques modifications dans les structures de données internes utilisées par le moteur PHP - ce qui signifie que les extensions doivent être ré -compiled, afin de correspondre à cette nouvelle version de ces structures de données.


La mise à jour de vos extensions PHP dépendra du système que vous utilisez.

Si vous êtes sur Windows, vous pouvez trouver le .dll pour certaines extensions ici: http://downloads.php.net/pierre/
Pour plus d'informations sur les différentes versions, vous pouvez consulter ce qui est dit dans la barre latérale gauche de windows.php.net .

Si vous êtes sur Linux, vous devez soit:

  • Vérifiez ce que votre distribution fournit
  • Ou utilisez la commande pecl pour télécharger à nouveau les sources des extensions en question et les recompiler.
34
Pascal MARTIN

juste 

pecl uninstall module_name

puis

pecl install module_name
7
Bảo Nam

Votre problème est dans le paquet php5-dev. Je suppose que vous êtes passé de php5.2 sur une ancienne version de linux à php5.3. J'ai fait la même chose, et quand j'ai réussi à installer PHP 5.3, il y a eu un conflit avec php5-dev. Pour une raison quelconque, il n'est pas mis à niveau vers la nouvelle version. Je ne sais pas pourquoi et cela m'est égal. Cependant, votre extension est compilée avec l'ancienne version de l'API, alors que php ofc utilise la version la plus récente de l'API. Ce que j'ai fait pour résoudre ce problème était:

J'ai supprimé php5-dev avec Sudo apt-get remove php5-dev, puis j'ai exécuté Sudo apt-get autoremove pour supprimer les restes qui me causaient des problèmes, et après cela, je viens d'installer php5-dev à nouveau .Sudo apt-get install php5-dev.

Une fois cela fait, j'ai retiré mon memcache avec Sudo pecl uninstall memcache et l'ai réinstallé Sudo pecl install memcache. Maintenant, le module et le php avaient la même version de l'API, donc j'ai tout de suite su que le problème était résolu :)

J'espère que ça aide.

6
Vladimir Lazarevski

Il est possible que les modules soient installés, mais votre fichier PHP.ini pointe toujours sur un ancien répertoire.

Vérifiez le contenu de/usr/lib/php/extensions. Dans le mien, il y avait deux répertoires: no-debug-non-zts-20060613 et no-debug-non-zts-20060613. Autour de la ligne 428 de votre php.ini, changez:

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

à

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

Puis redémarrez Apache. Cela devrait résoudre le problème.

3
apkostka

J'ai longtemps lutté avec ce problème et j'ai découvert que lorsque vous exécutez configure, il vous suffit de lui indiquer le chemin d'accès au bon outil php-config.

Dans mon cas, c'était 

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

... Si vous n'êtes pas sûr, lancez un locate php-config sur votre ordinateur et trouvez la bonne parmi les différentes versions installées. 

J'espère que cela aidera quelqu'un dans le futur.

PS. Ma valeur par défaut php-config a été définie sur 20090926, ce qui correspond à PHP 5.3. Celui que j'ai entré manuellement en tant que paramètre pour ./configure was pour PHP 5.4 (2010 ...) 

2
Andrew

J'ai eu un problème similaire après la mise à niveau de PHP 5.5 à PHP 5.6. Les bibliothèques phpize et php-config utilisées pour compiler l'extension phalcon étaient toujours celles de PHP 5.5. Je devais exécuter la commande ci-dessous: 

Sudo apt-get install php5.6-dev

Il y aura un long stacktrace, les informations clés que j'ai vues étaient les suivantes:

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

J'espère que ça aidera quelqu'un.

1
Goke Obasa

J'ai eu cette partie activée dans mon php.ini

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

Après avoir commenté ces lignes, le compositeur a été installé dans mes fenêtres 10

1
vicky shrestha

Ce problème vient de m'arriver et a été résolu simplement en augmentant Memory_limit de 32 M à 64 MVous pouvez ajuster la valeur sur le fichier où existe php.ini

localisez php.ini puis choisissez le bon fichier et recherchez memory_limit et après l'avoir modifié vous devez redémarrer Apache/etc/init.d/httpd restart

Bonne chance. 

0
Moustafa Mohamed

Dans mon cas dans php.ini

[CLDbg]
extension=php_cl_dbg_5_3_VC9.dll
clport=6000

J'ai supprimé Codelobster qui supporte différentes versions PHP, il faut donc mettre à jour à

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

J'aurais la même erreur même après avoir recompilé les modules.

Mais je l'ai résolu il vous suffit de spécifier le chemin absolu de votre phpize.

0
Hugo Bulthé

Avant de phpize, assurez-vous de mettre à jour votre chemin ($ PS1) pour qu'il pointe vers le nouveau PHP! phpize utilise votre environnement, et si vous avez encore des traces de votre ancien PHP sur votre passage ou dans d’autres parties de l’environnement, les choses vont devenir poilues!

0
Dmitry Minkovsky

Voici celui qui fonctionne avec php 5.5. Téléchargez xampp 1.8.3 depuis ici et téléchargez le fichier memcache dll depuis ici

0
user2289259

Dans mon cas, j'ai utilisé lnmp pour installer php avec la version 5.4.45. Mais peut-être parce que j'ai installé php5-dev après lnmp (ce qui, je suppose, n'est pas nécessaire si vous avez installé lnmp), mon phpize et php-config renvoient tous deux à des outils de version plus anciens que php.
J'ai résolu ce problème en changeant le lien logiciel de /etc/alternatives/phpize et /etc/alternatives/php-config en /usr/local/php/bin/phpize et /usr/local/php/bin/php-config.
J'espère que cela est utile.

0
YouCL