J'ai une instance EC2 sur Amazon Web Services et, dans le même VPC, il y a aussi une instance d'ElastiCache (Redis). Mon instance EC2 a installé Amazon Linux AMI 2015.09. Je l'ai également configuré pour fonctionner avec mpm_worker_module et non prefork. La configuration fonctionne correctement et je peux accéder aux pages de mon navigateur.Le module redis.so n'est pas chargé
J'ai ensuite installé redis client, et la commande redis-cli fonctionne parfaitement depuis ssh. J'ai ensuite installé phpredis (https://github.com/nicolasff/phpredis/zipball/master -O phpredis.zip) et j'ai créé un simple script PHP pour vérifier s'il fonctionne correctement (un simple index.php).
Si je lance ce script à partir de la console ssh (c'est-à-dire, index php.php), cela fonctionne très bien. Si je lance le même script essayant d'ouvrir la page de mon navigateur je reçois cette erreur: Fatal error: Class 'Redis' not found
Mon fichier php.conf à l'intérieur apache est le suivant:
<IfModule prefork.c>
LoadModule php5_module modules/libphp-5.6.so
</IfModule>
<IfModule !prefork.c>
LoadModule php5_module modules/libphp-zts-5.6.so
</IfModule>
Dans le dossier/etc/PHP- ZTS-5.6.d J'ai ajouté le fichier "redis.ini" avec à l'intérieur
extension = redis.so
J'ai aussi remarqué que l'installation de Redis ajoute redis.so que dans ce dossier
/usr/lib64/php/5.6/modules/
Et pas au dossier /usr/lib64/php-zts/5.6/modules/
, donc je l'ai copié d'un dossier à l'autre. Mais il ne fonctionne toujours pas, avec la même erreur:
Fatal error: Class 'Redis' not found
Au lieu de cela, si j'utilise Predis, avec « include » de autoload.php, il fonctionne très bien. Mais je voudrais avoir installé phpredis, car notre système va faire des milliers d'appels chaque seconde à Redis Server, et phpredis sera beaucoup plus rapide depuis sa compilation.
Qu'est-ce que je fais mal?
Modifier Dans mon erreur Redis journal je reçois ce message
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/5.6/modules/redis.so' - /usr/lib64/php/5.6/modules/redis.so: undefined symbol: compiler_globals in Unknown on line 0
De plus, si j'utilise le module prefork, il fonctionne très bien. Si j'utilise le travailleur, j'ai l'erreur ci-dessus.