php-gettext 已安装但不可用
php-gettext installed but not available
我在 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);
}
确实打印 "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 restart
或 sudo 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
我在 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);
}
确实打印 "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 restart
或 sudo 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