为什么OS X上缺少gettext别名_()?

Sha*_*ell 3 php osx-lion

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

Fatal error: Call to undefined function _() 
Run Code Online (Sandbox Code Playgroud)

这是我的环境

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
Run Code Online (Sandbox Code Playgroud)

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

Sha*_*ell 7

记录......这是你添加的gettext方式OS X Lion

安装ICU

下载ICU

运行这些命令

tar xzvf icu4c-4_8_1-src.tgz
cd icu/source
./runConfigureICU MacOSX
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

下载PHP 5.3.6源代码

运行这些命令

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/
Run Code Online (Sandbox Code Playgroud)

把它放在你的php.ini文件中

extension=intl.so
Run Code Online (Sandbox Code Playgroud)

安装Gettext

下载Gettext

运行这些命令

tar -zxf gettext-0.18.1.1.tar.gz
cd  gettext-0.18.1.1
Run Code Online (Sandbox Code Playgroud)

Apple不会发送Gettext和Intl,问题在于Gettext显然定义了Stpncpy函数,Lion中的内容也是如此.

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

然后运行这些命令

./configure
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

回到PHP源目录:

运行这些命令

cd ext/gettext
phpize
./configure --with-gettext
make
sudo cp modules/gettext.so /usr/lib/php/extensions/no-debug-non-zts-20090626/
Run Code Online (Sandbox Code Playgroud)

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

extension=gettext.so
Run Code Online (Sandbox Code Playgroud)

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