OVH Community, votre nouvel espace communautaire.

Installer l'extension redis.so


stephaneeybert
19/02/2013, 14h02
Excusez moi, je ne me suis pas rendu compte que j'ecrivais pas en francais...

Ce que j'avais oublie de faire, est de supprimer les anciens fichiers objets de make precedent.

Bien que je compilais contre le bon environnement, je ne compilais en fait pas de nouveaux fichiers objets, car ceux ci existaient deja.

Un simple:
make clean
a resolut le probleme.

Et le message d'erreur ci-dessus avec les versions d'API differentes a disparu.

stephaneeybert
19/02/2013, 13h59
What I forgot to do is to remove the old object files from the previous make.

Although I was compiling against the correct environment, I was in fact not compiling at all, because the object files already existed.

So a simple:
make clean
did the trick.

The above API version error then disappeared.

stephaneeybert
19/02/2013, 13h14
Je crois que j'ai compile mon extension avec la bonne version de l'API:

vps13495 phpredis-2.2.2 # make install
Installing shared extensions: /usr/local/php53/lib/php/extensions/no-debug-non-zts-20090626/
vps13495 phpredis-2.2.2 # ll /usr/local/php53/lib/php/extensions/no-debug-non-zts-20090626/
total 552
-rwxr-xr-x 1 root root 559641 2013-02-19 12:57 redis.so
vps13495 phpredis-2.2.2 # ll /usr/local/php53/lib/php/extensions/no-debug-non-zts-20090626/redis.so -rwxr-xr-x 1 root root 559641 2013-02-19 12:57 /usr/local/php53/lib/php/extensions/no-debug-non-zts-20090626/redis.so

mais est ce le cas ?

Car apres un redemarrage du serveur Apache, et une requete http, la log affiche:

[19-Feb-2013 12:04:52] PHP Warning: PHP Startup: redis: Unable to initialize module
Module compiled with module API=20060613
PHP compiled with module API=20090626
These options need to match

Pourtant je specifie bien mon extension dans le fichier de configuration /usr/local/lib64/php53/php.ini avec:
extension=/usr/local/php53/lib/php/extensions/no-debug-non-zts-20090626/redis.so
session.save_handler = redis

stephaneeybert
19/02/2013, 13h07
J'ai pu compiler mon extension avec la meme version d'API que celle de PHP

extension=/usr/local/php53/lib/php/extensions/no-debug-non-zts-20090626/redis.so

stephaneeybert
19/02/2013, 13h03
Okay, j'avance doucement...

J'ai viens aussi de mettre a jour le lien symbolique de php-config:
ln -s /usr/local/php53/bin/php-config /bin/php-config
car celui-ci pointait vers mon ancienne version de PHP5:
/usr/local/php5/bin/phpize
alors que je suis maintenant en PHP53
/usr/local/php53/bin/php-config

stephaneeybert
19/02/2013, 12h53
Je me rend compte que le probleme vient du fait que j'ai compile mon extension avec la mauvaise version de l'API:

PHP Startup: redis: Unable to initialize module
Module compiled with module API=20060613
PHP compiled with module API=20090626
These options need to match

J'essaye donc de compiler mon extension avec la version 20090626 pour que celle ci soit identique a celle de mon PHP.

J'ai du pour cela mettre a jour le lien symbolique de phpize:
ln -s /usr/local/php53/bin/phpize /bin/phpize
car celui-ci pointait vers mon ancienne version de PHP5:
/usr/local/php5/bin/phpize
alors que je suis maintenant en PHP53.

Mais il faut aussi que je mettre a jour ma configuration pour que la commande:
php-config --includes
affiche /usr/local/php53/include/php au lieu de /usr/local/php5/include/php

Pour le moment, la commande
php-config --includes
affiche
-I/usr/local/php5/include/php -I/usr/local/php5/include/php/main -I/usr/local/php5/include/php/TSRM -I/usr/local/php5/include/php/Zend -I/usr/local/php5/include/php/ext -I/usr/local/php5/include/php/ext/date/lib

Ensuite je pourrai compiler mon extension.

Ma question est de savoir pourquoi ma configuration affichee par php-config --includes n'est pas a jour par rapport a ma version de PHP53 et comment je puis la mettre a jour.

stephaneeybert
06/02/2013, 19h23
Bonjour,

J'ai une Release 2 Gentoo 64 bits sur laquelle j'ai un PHP 5.3 qui tourne.

Je voudrais sauvegarder les sessions non plus sur le systeme de fichiers, mais dans le serveur Redis.

J'ai pu compiler le serveur Redis ainsi que l'extension phpredis a https://github.com/nicolasff/phpredis/tags

Mais quand je modifie mon fichier php.ini pour y ajouter l'extension et le mode de session:

extension=/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/redis.so

session.save_handler = redis
session.save_path = "tcp://localhost:6379"

et que je redemarre le serveur Apache, je peux voir que le phpinfo() ne presente pas Redis.

Comment savoir si mon serveur php accepte les extensions dynamiques ?

Merci.