【问题标题】:Why is the gettext alias _() missing on OS X?为什么 OS X 上缺少 gettext 别名 _()?
【发布时间】:2014-01-17 00:48:05
【问题描述】:

我正在运行OS X Lion,我的一些代码使用了_()gettext 别名,但我收到此错误

Fatal error: Call to undefined function _() 

这是我的环境

PHP 5.3.6 with Suhosin-Patch (cli) (built: Jun 25 2011 10:41:21) 
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
      with Xdebug v2.1.1, Copyright (c) 2002-2011, by Derick Rethans

我尝试使用 php 选项 suhosin.simulation = On 但这并没有改变任何东西,所以它似乎不是 Suhosin-Patch。

【问题讨论】:

  • 运行php --ri gettext时会发生什么?
  • Extension 'gettext' not present. 呵呵!现在安装gettext。

标签: php osx-lion


【解决方案1】:

记录在案...这是您将gettext 添加到OS X Lion 的方式

安装 ICU

Download ICU

运行这些命令

tar xzvf icu4c-4_8_1-src.tgz
cd icu/source
./runConfigureICU MacOSX
make
sudo make install

Download PHP 5.3.6 sources

运行这些命令

tar -zxf php-5.3.6.tar.gz
cd ext/intl
phpize
./configure --enable-intl
make
sudo cp modules/intl.so /usr/lib/php/extensions/no-debug-non-zts-20090626/

把它放在你的 php.ini 文件中
extension=intl.so

安装 Gettext

Download Gettext

运行这些命令

tar -zxf gettext-0.18.1.1.tar.gz
cd  gettext-0.18.1.1

Apple 不会提供 Gettext 和 Intl 问题是 Gettext 显然定义了 Stpncpy 函数,就像在 Lion 中所做的那样。

你需要打开gettext-tools/gnulib-lib/stpncpy.c并将stpncpy的所有引用更改为stpncpy2

然后运行这些命令

./configure
make
sudo make install

回到PHP源码目录:

运行这些命令

cd ext/gettext
phpize
./configure --with-gettext
make
sudo cp modules/gettext.so /usr/lib/php/extensions/no-debug-non-zts-20090626/

并将其添加到 php.ini 文件中:

extension=gettext.so

参考资料: http://www.ittreats.com/os/php/php-with-intl-and-gettext-on-osx-lion-bertrand-mansion.html

【讨论】:

    【解决方案2】:

    在 brew 的帮助下,我可以更简单地安装 gettext。

    安装 ICU

    • brew 安装 icu4c

    安装 gettext

    • brew install gettext

    构建模块

    构建ICU模块

    导出 PATH=$PATH:/usr/local/opt/icu4c/bin

    ./configure --enable-intl LDFLAGS='-L/usr/local/opt/icu4c/lib' CPPFLAGS='-I/usr/local/opt/icu4c/include'

    也许 LD/CPPFLAGS 设置不是必需的。

    构建gettext模块

    ./configure --enable-gettext

    复制生成的模块

    将模块复制到 php 库目录 (/usr/lib/php/extensions/no-debug-non-zts-XXXXX)。

    重启apache

    sudo apachectl restart

    【讨论】:

      猜你喜欢
      • 2017-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-28
      • 2013-05-03
      • 1970-01-01
      • 2011-09-20
      相关资源
      最近更新 更多