0

我在我的 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

PS:

我还在我的 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"
4

1 回答 1

1

创建一个网页,包含以下内容:

<?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 文件?

于 2012-06-03T13:40:22.670 回答