Problema:
Tengo una composición Docker con un servicio nginx y un servicio PHP. Cuando intento abrir una página de mi proyecto de desarrollo, encuentro este error:
Error fatal: llamada a la función no definida bindtextdomain() en /usr/share/nginx/html/some_project/some_path/Bootstrap.php en la línea 16
Vi que es un problema de una dependencia faltante: php-gettext .
Mi configuración:
En mi Dockerfile, trato de instalarlo:
FROM php:5.6.30-fpm MAINTAINER DarckCrystale "xxx@xxx.xx" # Here I try to install the php-gettext extension # but it does not work RUN apt-get update && apt-get install -y php-gettext gettext # Setup PHP configuration ADD php.ini /usr/local/etc/php/conf.d/php.iniEn mi php.ini, lo cargo:
extension=gettext.soOtra información:
Cuando corro en mi contenedor
php -i | grep extension_dirMe aparece este mensaje:
Advertencia de PHP: inicio de PHP: no se puede cargar la biblioteca dinámica '/usr/local/lib/php/extensions/no-debug-non-zts-20131226/gettext.so' - /usr/local/lib/php/extensions/no -debug-non-zts-20131226/gettext.so: no se puede abrir el archivo de objeto compartido: No existe tal archivo o directorio en Desconocido en la línea 0
Lo que me parece a mi:
pienso
RUN apt-get update && apt-get install -y php-gettext gettext no instala la extensión php-gettext . no sé por qué Creo que este es un problema específico de PHP Dockerized.
Entonces, después de luchar, ¡finalmente encontré cómo instalar esta extensión en el contenedor de PHP!
¿Cómo resolver este problema?
Use docker-php-ext-install en lugar de apt-get install en el Dockerfile:
FROM php:5.6.30-fpm MAINTAINER DarckCrystale "xxx@xxx.xx" # Here I install the php-gettext extension # and it works! :D RUN docker-php-ext-install gettext # Setup PHP configuration ADD php.ini /usr/local/etc/php/conf.d/php.ini¿Cuál es el problema?
El contenedor de PHP tiene una forma específica de instalar extensiones de PHP:
Cómo instalar más extensiones de PHP
Proporcionamos los scripts auxiliares
docker-php-ext-configure,docker-php-ext-installydocker-php-ext-enablepara instalar extensiones de PHP más fácilmente.
Por lo tanto, la instalación de la extensión php-gettext parece funcionar solo con los scripts proporcionados.