octubre 22, 2021

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
Categories: CloudTags: