向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具有值集的文件。
我该如何解决这个问题?我错过了什么?
非常感谢知识渊博的人的帮助。
答案 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
使用
保存并关闭并重新启动apachesudo service apache2 restart
答案 5 :(得分:0)
grep -lr "Berlin" * | xargs sed -i .backup -e 's#Europe/Berlin#America/New_York#g'
上面的命令在我的案例中需要一些技巧。这也将创建备份文件。