A continuación añadiremos el soporte REDIS a una App alojada en el entorno Cloud de Microsoft con PHP, debería ser como cualquier otra extensión, pero en algunas versiones concretas aparecen errores en el proceso habitual.
Desde la consola SSH en KUDU para la Azure App ejecutamos el comando:
pear config-show
Para conocer el directorio de instalación de las extensiones de PHP, lo necesitaremos más adelante:
PHP extension directory ext_dir /usr/local/lib/php/extensions/no-debug-non-zts-20190902
Comenzamos con la instalación, creamos el directorio, copiamos el ficheros y añadimos a al configuración:
pecl install redis
mkdir /home/site/ext
cp /home/site/ext/usr /usr/local/lib/php/extensions/no-debug-non-zts-20190902/redis.so /home/site/ext
mkdir -p /home/site/ini
echo "extension=/home/site/ext/redis.so" >> /home/site/ini/extensions.ini
Desde el portal de Azure añadimos la nueva variable desde la configuración del App Service:
HP_INI_SCAN_DIR /usr/local/etc/php/conf.d:/home/site/ini
Pero con la versión PHP 7.4 muestra error:
...
creating libtool
appending configuration tag "CXX" to libtool
configure: patching config.h.in
configure: creating ./config.status
config.status: creating config.h
running: make
/bin/bash /tmp/pear/temp/pear-build-root8i3TOv/redis-5.3.4/libtool --mode=compile cc -I. -I/tmp/pear/temp/redis -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-root8i3TOv/redis-5.3.4/include -I/tmp
/pear/temp/pear-build-root8i3TOv/redis-5.3.4/main -I/tmp/pear/temp/redis -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/us
r/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/usr/local/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/redis/redis.c -o redis.lo
mkdir .libs
cc -I. -I/tmp/pear/temp/redis -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-root8i3TOv/redis-5.3.4/include -I/tmp/pear/temp/pear-build-root8i3TOv/redis-5.3.4/main -I/tmp/pear/temp/redis -I/usr/lo
cal/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -I/usr/local/include
/php/ext -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/redis/redis.c -fPIC -DPIC -o .libs/redis.o
/tmp/pear/temp/redis/redis.c:22:10: fatal error: config.h: No such file or directory
#include "config.h"
^~~~~~~~~~
compilation terminated.
make: *** [Makefile:192: redis.lo] Error 1
ERROR: `make' failed
Desde la comunidad de PHP hay un parche para poder corregir el error mientras tanto:
mkdir -p /tmp/pear/temp
cd /tmp/pear/temp
pecl bundle redis
cd redis
phpize
./configure --with-php-config=/usr/local/bin/php-config --enable-redis-igbinary=no --enable-redis-lzf=no --enable-redis-zstd=no
make
ls -l /tmp/pear/temp/redis/modules
mkdir -p /home/site/ext
cp /tmp/pear/temp/redis/modules/redis.so /home/site/ext/redis.so
mkdir -p /home/site/ini
echo "extension=/home/site/ext/redis.so" >> /home/site/ini/extensions.ini