【问题标题】:php-gettext installed but not availablephp-gettext 已安装但不可用
【发布时间】:2017-04-29 00:42:46
【问题描述】:

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

  • apache2 2.4.18-2ubuntu3.1
  • php-gettext 1.0.11-2build1
  • gettext 0.19.7-2ubuntu3
  • php7.0 7.0.15-0ubuntu0.16.04.4

当我调用 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);
}

确实打印“您没有使用 PHP 安装 gettext 库。”

除了文档,我安装的唯一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

【问题讨论】:

    标签: php apache2 gettext php-gettext


    【解决方案1】:

    它应该在安装后开箱即用。您是否重新启动了 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
    

    【讨论】:

    • 已重新启动。没有 gettext.ini (在我的问题中添加了ls 输出)。我可以编辑 php.ini 但我在任何地方都找不到 gettext.so 所以我认为这不会有什么不同吗? phpenmod 命令也不起作用。没有安装 php5,所以 a2dismod 命令出错。
    • 我手动创建了一个20-gettext.ini(它丢失了),它在重新启动后工作 - 谢谢!
    • @Catchwa 现在因为它可以工作,所以在你的库路径中一定有一个gettext.so。您可以通过在控制台上键入find / -name gettext.so 来查找文件。在我的系统上,它位于/usr/lib/php/20151012/gettext.so
    • 是的,有 - 请参阅我的问题的底部 :)
    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 2012-05-26
    • 2019-02-26
    • 1970-01-01
    • 2013-03-10
    相关资源
    最近更新 更多