我在我的osx lion上安装了php5-intl。
它似乎在命令行模式下正常工作,因为如果我尝试运行以下脚本 (1):
$fmt = datefmt_create( "en_US" ,IntlDateFormatter::FULL,IntlDateFormatter::FULL,'America/Los_Angeles',IntlDateFormatter::GREGORIAN );
echo "First Formatted output is ".datefmt_format( $fmt , 0)."'n";
> php -m |grep intl
intl
> php test.php
First Formatted output is Wednesday, December 31, 1969 4:00:00 PM Pacific Standard Time
但是,如果我尝试从我的 apache 中晒出相同的阳光(sudo apachectl restart
之后),我会收到以下错误:
> tail /private/var/log/apache2/error_log
PHP Fatal error: Call to undefined function datefmt_create() in
附言:
我还在我的 php 中添加了以下行.ini
extension_dir = "/opt/local/lib/php/extensions/no-debug-non-zts-20090626"
ll /opt/local/lib/php/extensions/no-debug-non-zts-20090626
total 848
-rwxr-xr-x 1 root 261712 7 May 10:54 xdebug.so
-rwxr-xr-x 1 root 168912 31 May 19:53 intl.so
在 php 中.ini写成:Loaded Configuration File
/private/etc/php.ini
这是我编辑的文件。
有关我的配置的其他信息如下:
/private/etc/apache2/httpd.conf
LoadModule php5_module libexec/apache2/libphp5.so
/usr/libexec/apache2/libphp5.so
/private/etc/php.ini
extension_dir = "/opt/local/lib/php/extensions/no-debug-non-zts-20090626"
创建一个网页,其中包含以下内容:
<?php
phpinfo();
echo datefmt_create("en_US" ,IntlDateFormatter::FULL,IntlDateFormatter::FULL);
?>
(是的,我知道第二行给出错误,但在这种情况下,告诉我们它有效就足够了。
查看该网页,然后搜索"国际化支持"或"国际"。就我而言,我看到:
Internationalization support enabled
version 1.0.3
ICU version 4.2.1
Directive Local Value Master Value
intl.default_locale no value no value
intl.error_level 0 0
如果你没有 intl 部分,那么它只能是一个 php.ini 问题(更常见的原因是不是重新启动 apache,但你说你已经这样做了)。
要确认,请再次编辑 php.ini 文件,并在最后引入一个您可以确定会起作用的更改。 例如 asp_tags = 1
.现在重新加载你的 phpinfo() 页面,并确保你在那里看到更改。
如果你不这样做,也许是权限;用户Apache运行为无法读取你的php.ini文件?