Docker PHP5.6 调用未定义函数 bindtextdomain()
Docker PHP5.6 Call to undefined function bindtextdomain()
问题:
我有一个 Docker 与一个 nginx 服务和一个 PHP 服务组合。
当我尝试打开我的开发项目的页面时,我遇到了这个错误:
Fatal error: Call to undefined function bindtextdomain() in /usr/share/nginx/html/some_project/some_path/Bootstrap.php on line 16
我看到这是一个缺少依赖项的问题:php-gettext
。
我的配置:
在我的 Docker 文件中,我尝试安装它:
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.ini
在我的 php.ini 中,我加载它:
extension=gettext.so
其他信息:
当我 运行 在我的容器中时
php -i | grep extension_dir
我显示了这条消息:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20131226/gettext.so' - /usr/local/lib/php/extensions/no-debug-non-zts-20131226/gettext.so: cannot open shared object file: No such file or directory in Unknown on line 0
在我看来是什么:
我觉得
RUN apt-get update && apt-get install -y php-gettext gettext
不安装 php-gettext
扩展。我不知道为什么。我认为这是一个 PHP Docker 化的具体问题。
于是,经过一番努力,我终于找到了如何在PHP容器中安装这个扩展!
如何解决这个问题?
在 Dockerfile 中使用 docker-php-ext-install
而不是 apt-get install
:
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
问题是什么?
PHP 容器有安装 PHP 扩展的特定方法:
How to install more PHP extensions
We provide the helper scripts docker-php-ext-configure
, docker-php-ext-install
, and docker-php-ext-enable
to more easily install PHP extensions.
所以 php-gettext
扩展安装似乎只能使用提供的脚本。
问题:
我有一个 Docker 与一个 nginx 服务和一个 PHP 服务组合。 当我尝试打开我的开发项目的页面时,我遇到了这个错误:
Fatal error: Call to undefined function bindtextdomain() in /usr/share/nginx/html/some_project/some_path/Bootstrap.php on line 16
我看到这是一个缺少依赖项的问题:php-gettext
。
我的配置:
在我的 Docker 文件中,我尝试安装它:
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.ini
在我的 php.ini 中,我加载它:
extension=gettext.so
其他信息:
当我 运行 在我的容器中时
php -i | grep extension_dir
我显示了这条消息:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20131226/gettext.so' - /usr/local/lib/php/extensions/no-debug-non-zts-20131226/gettext.so: cannot open shared object file: No such file or directory in Unknown on line 0
在我看来是什么:
我觉得
RUN apt-get update && apt-get install -y php-gettext gettext
不安装 php-gettext
扩展。我不知道为什么。我认为这是一个 PHP Docker 化的具体问题。
于是,经过一番努力,我终于找到了如何在PHP容器中安装这个扩展!
如何解决这个问题?
在 Dockerfile 中使用 docker-php-ext-install
而不是 apt-get install
:
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
问题是什么?
PHP 容器有安装 PHP 扩展的特定方法:
How to install more PHP extensions
We provide the helper scripts
docker-php-ext-configure
,docker-php-ext-install
, anddocker-php-ext-enable
to more easily install PHP extensions.
所以 php-gettext
扩展安装似乎只能使用提供的脚本。