9

向 StackOverflow 大师致敬!

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

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

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

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

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

date.timezone = America/New_York

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

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

将不胜感激有知识的人的帮助。

4

6 回答 6

10

I know I might be a little late in answering this but I see on a few sites that you are asking about setting the correct timezone in MAMP.

It should be noted that there are two locations for a php.ini file for the version of php you are using. MAMP could be loading it from a different path then the one you are editing.

For example, lets say we are using php 5.3. Here are two locations of a php.ini file that could confuse someone on which one to edit.

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

You seem to be editing it at this location below:

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

Editing the timezone in the second path did not work for me but editing the one in the first one did. It could be that you are editing the wrong file even though it looks the same. I have tested this on my version. Running <?php phpinfo(); ?> in a php file and checking the path of the php.ini file will always show the correct path.

Also just to point out, using double quotes around the value of date.timezone will work. For example in my php.ini file the following works.

date.timezone = "America/Vancouver"

Also the default value was encapsulated in double quotes as well.

I was also using MAMP version 2.1.1 when testing this out.

于 2013-08-18T19:26:39.253 回答
6

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

export TZ="America/New_York"

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

于 2013-01-31T04:32:12.783 回答
3

Note that there are different versions of PHP in the /Applications/MAMP/conf. You should check which version you are using into the MAMP -> Preferences -> Tab "PHP"

If set to 5.4.4, you must access /Applications/MAMP/conf/php5.4.4/php.ini

@edit

Run in Terminal this:

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

or

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
于 2012-12-10T04:48:12.700 回答
3

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

MacOS X 预装了自己的 PHP 版本,当您键入php. 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 安装路径。希望这可以帮助!

于 2013-12-04T21:49:40.513 回答
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

这个对我有用!!!

于 2015-04-02T08:45:31.093 回答
0

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

就我而言,上面的命令需要一些技巧。这也将创建备份文件。

于 2013-08-16T20:33:39.623 回答