php-gettext 已安装但不可用

php-gettext installed but not available

我在 Ubuntu 16.04 上安装了以下软件包:

我调用 phpinfo() 时唯一提到的 gettext 是在模块作者部分 ("GetText = Alex Plotnick"),所以我假设支持已正确编译。

gettext 似乎没有正确加载到 PHP,因为以下代码:

<?php

if ( false === function_exists('gettext') ) {
    echo "You do not have the gettext library installed with PHP.";
    exit(1);
}

确实打印 "You do not have the gettext library installed with PHP."

除了文档,我安装的唯一 php-gettext 个文件是:

/usr/share/php/php-gettext/gettext.inc
/usr/share/php/php-gettext/streams.php
/usr/share/php/php-gettext/gettext.php

我还没有真正触及任何 php 或 apache 配置(除了尝试安装 icingaweb2

谁能看出我的问题是什么?

更新 更多调试...

me@phoenix:~$ ls /etc/php/7.0/apache2/conf.d/
10-mysqlnd.ini  20-dom.ini      20-intl.ini  20-mbstring.ini  20-pdo_mysql.ini  20-wddx.ini       20-xmlwriter.ini
15-xml.ini      20-imagick.ini  20-ldap.ini  20-mysqli.ini    20-simplexml.ini  20-xmlreader.ini  20-xsl.ini


me@phoenix:~$ sudo a2dismod php5
ERROR: Module php5 does not exist!


me@phoenix:~$ sudo find / -name gettext.so
/usr/lib/php/20151012/gettext.so
/usr/lib/x86_64-linux-gnu/perl5/5.22/auto/Locale/gettext/gettext.so

安装后应该开箱即用。你有没有重新启动Apache?首先在终端控制台上尝试 sudo apache2ctl restartsudo service apache2 restart。如果两者都不能在您的系统上运行,请尝试 sudo /etc/init.d/apache2 restart.

检查是否存在包含行

的文件 /etc/php/7.0/apache2/conf.d/20-gettext.ini(或您系统上的类似路径)
extension=gettext.so

必须不能前面加分号,否则被注释掉。一些安装也可能在基本 php 配置文件 /etc/php/php/7.0/php.ini 中配置该行,但是 debian 派生的方法是使用 conf.d 文件夹中的额外文件。

您可以在命令行上启用 PHP 个模块(例如 gettext)

sudo phpenmod -v 7.0 gettext

如果这不起作用,请手动编辑配置。

最后如上所述重新启动 Apache 服务。

还要检查 Apache 是否 运行 预期的 PHP 版本 7.0,在您的 PHP 页面中使用以下行

echo phpversion();

您可以在命令行

上从多个已安装的 PHP 版本启用/禁用 Apache2 模块
sudo a2dismod php5
sudo a2enmod php7.0
sudo apache2ctl restart