MAMP / PHP.INI:phpinfo()中的“date.timezone”设置显示“无值”,即使该值在php.ini中设置

时间:2012-12-10 04:36:04

标签: mamp php

向StackOverflow大师致以问候!

这是我正在努力解决的问题。

我在MAMP中运行phpinfo(),结果表在date.timezone行的两列中显示“无值”。

此外,该页面显示以下内容:

警告: phpinfo()[function.phpinfo]:依赖系统的时区设置是不安全的。您必需使用date.timezone设置或date_default_timezone_set()函数。如果您使用了这些方法中的任何一种并且仍然收到此警告,则很可能拼错了时区标识符。我们在 /Applications/MAMP/bin/mamp/phpinfo.php

中选择'America / New_York'作为'EST / -5.0 / no DST'

在thr php.ini文件中,设置如下:

date.timezone = America / New_York

我预见建议检查php.ini的路径是否正确 - 我已经这样做了,路径确实是正确的:/Applications/MAMP/conf/php5.3/php.ini - 那是IS具有值集的文件。

我该如何解决这个问题?我错过了什么?

非常感谢知识渊博的人的帮助。

6 个答案:

答案 0 :(得分:9)

我知道我回答这个问题可能有点迟,但我在一些网站上看到你在MAMP中设置正确的时区。

应该注意,对于您正在使用的php版本,php.ini文件有两个位置。 MAMP可以从与您正在编辑的路径不同的路径加载它。

例如,假设我们使用的是php 5.3。这是php.ini文件的两个位置,可能会混淆某人编辑的位置。

/Applications/MAMP/bin/php/php5.3/conf/php.ini

您好像在下面这个位置编辑它:

/Applications/MAMP/conf/php5.3/php.ini

在第二条路径中编辑时区对我来说不起作用,但编辑第一条路径中的时区却没有。可能是您正在编辑错误的文件,即使它看起来一样。我在我的版本上测试了这个。在php文件中运行<?php phpinfo(); ?>并检查php.ini文件的路径将始终显示正确的路径。

另外要指出的是,在date.timezone的值周围使用双引号将起作用。例如,在我的php.ini文件中,以下工作。

date.timezone = "America/Vancouver"

此外,默认值也用双引号封装。

我在测试时也使用了MAMP 2.1.1版。

答案 1 :(得分:6)

如果在相关的php.ini文件中正确设置了时区,但仍然收到此消息,则可以尝试设置TZ环境变量。编辑.profile以添加以下行(在您自己的timezone string中):

export TZ="America/New_York"

不确定为什么(a)MAMP会覆盖你的php.ini设置,(b)PHP在使用TZ env变量时不会发出通知/警告,即使它说它会,但这个解决方案对我来说使用MAMP 2.0.5 with PHP 5.3.6。

答案 2 :(得分:3)

请注意, / Applications / MAMP / conf 中有不同版本的PHP。您应该检查您在MAMP中使用的版本 - &gt;偏好 - &gt;标签“PHP”

如果设置为5.4.4,则必须访问 /Applications/MAMP/conf/php5.4.4/php.ini

@edit

在终端中运行:

sed -i '$ a\date.timezone = "America/New_York"' /Application/MAMP/conf/php{5.4.4,5.2.17,5.3.13,5.3.14,5.3.5,5.4.3}/php.ini

sed -i 's/date.timezone = "Europe/Berlin"/date.timezone = "America/New_York"/g' /Application/MAMP/conf/php{5.4.4,5.2.17,5.3.13,5.3.14,5.3.5,5.4.3}/php.ini

答案 3 :(得分:3)

如果在PHP的终端CLI使用中出现此错误,则可能是本机与MAMP PHP冲突的问题。

MacOS X预装了自己的PHP版本,这就是当你输入php时在shell中运行的版本。 MAMP的PHP配置与预先安装的PHP配置是分开的:更改MAMP PHP时区设置不会影响您在CLI中看到的内容 - 因此时区错误仍然存​​在。快速检查方法是运行which php - 如果您没有看到以/Applications/MAMP/...开头的路径,则需要调整环境。

为此,请编辑.profile(或bash RC文件)文本文件并将此行添加到其中:

export PATH="/Applications/MAMP/bin/php5.5.3/bin:$PATH"

调整上述路径以指向所需的MAMP PHP安装。然后运行:

. ~/.profile
hash -r

这将立即应用PATH更改(否则您需要打开一个新的终端窗口来应用更改)。第二个命令只是一个bash CLI缓存清除命令。

作为最终检查,运行which php以验证正在使用哪个PHP安装路径。希望这有帮助!

答案 4 :(得分:1)

在Ubuntu 13.10中使用php 5.5.3 打开你的终端并做

cd /

sudo find -name php.ini

它为我显示了两个文件php.ini:

 ./etc/php5/apache2/php.ini
    ./etc/php5/cli/php.ini

使用sudo打开两个文件,我使用nano

sudo nano /etc/php5/apache2/php.ini

查找并修改此行:

;date.timezone =

并改为:

date.timezone = America/Caracas

保存并关闭此文件并编辑另一个

sudo nano /etc/php5/cli/php.ini

查找并修改此行:

;date.timezone =

并改为:

date.timezone = America/Caracas

使用

保存并关闭并重新启动apache
sudo service apache2 restart

它对我有用!!!

答案 5 :(得分:0)

grep -lr "Berlin" * | xargs sed -i .backup -e 's#Europe/Berlin#America/New_York#g'

上面的命令在我的案例中需要一些技巧。这也将创建备份文件。