问题:
我有一个使用nginx服务和PHP服务的Docker。 当我尝试打开我的开发项目的页面时,我遇到了这个错误:
致命错误:在第16行的/usr/share/nginx/html/some_project/some_path/Bootstrap.php中调用未定义的函数bindtextdomain()
我看到这是一个缺少依赖的问题:php-gettext
。
我的配置:
在我的Dockerfile中,我尝试安装它:
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警告:PHP启动:无法加载动态库' /usr/local/lib/php/extensions/no-debug-non-zts-20131226/gettext.so' - /usr/local/lib/php/extensions/no-debug-non-zts-20131226/gettext.so:无法打开共享对象文件:第0行的“未知”中没有此类文件或目录
对我来说似乎是什么:
我认为
RUN apt-get update && apt-get install -y php-gettext gettext
未安装php-gettext
扩展程序。我不知道为什么。我认为这是一个PHP Dockerized特定问题。
答案 0 :(得分:1)
所以,经过努力,我终于找到了如何在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扩展:
如何安装更多PHP扩展程序
我们提供帮助脚本
docker-php-ext-configure
,docker-php-ext-install
和docker-php-ext-enable
,以便更轻松地安装PHP扩展。
所以php-gettext
扩展安装似乎只能使用提供的脚本。