为什么每次在MAC OS X上打开终端时都会收到PHP date.timezone警告?

时间:2014-12-22 09:23:32

标签: php macos datetime terminal

为什么每次在OS X上打开Terminal.app时都会收到以下PHP警告?

  

上次登录:12月22日星期一11:53:25 ttys000

     

PHP警告:未知:它   依靠系统的时区设置是不安全的。你是    required 使用date.timezone设置或date_default_timezone_set()函数。如果您使用其中任何一个   方法,你最有可能仍然得到这个警告   拼写错误的时区标识符。我们选择了时区' UTC'对于   现在,但请设置date.timezone以选择您的时区。在未知   在第0行

     

机器:~user $

我今天才注意到这一点,之前我没有显示此警告。 我在php.ini中设置了PHP date.timezone:

[Date]
; Defines the default timezone used by the date functions
; Will be changed by MAMP to system timezone
date.timezone = "Europe/Moscow"

该指令位于位于 /Applications/MAMP/bin/php/php5.6.2/conf/php.ini 的php.ini中,这是我的PHP使用的一个PHP配置文件CLI还:

machine:~ user$ which php
/Applications/MAMP/bin/php/php5.6.2/bin/php

machine:~ user$ php -i | grep "Configuration File"
Configuration File (php.ini) Path => /Applications/MAMP/bin/php/php5.6.2/conf
Loaded Configuration File => /Applications/MAMP/bin/php/php5.6.2/conf/php.ini

我还检查了/private/etc/php.ini中的预装PHP的php.ini(由/etc/php.ini别名),我也在那里设置了date.timezone指令。 / p>

那为什么我仍然会收到这个令人讨厌的警告?

感谢您的关注!

编辑:这是php --ini

的输出
Configuration File (php.ini) Path: /Applications/MAMP/bin/php/php5.6.2/conf
Loaded Configuration File:         /Applications/MAMP/bin/php/php5.6.2/conf/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)

似乎唯一加载的conf文件是MAMP的php.ini,但为什么我在启动终端时不断获取该警告?

1 个答案:

答案 0 :(得分:1)

我发现了这个问题。在我的 home 文件夹中的.bash_profile中是这一行:

export PHP_API_VER=`php -i | grep 'PHP Extension =' | grep -oE '[0-9]+'`

我使用此变量来了解我当前使用的PHP API扩展。由于此变量导出是在此之后:

PATH="$MAMP_PHP_BIN_FOLDER:$PATH"

将PHP bin文件夹( php 命令所在的位置)添加到PATH env var,我遇到了这个错误,因为在打开Terminal.app时错误的 php 使用了命令我必须在PATH之后输出PHP_API_VER。

然后我问自己"如果我同时安装了带有date.timezone指令的MAMP PHP和OS X预装PHP .ini文件,为什么我会收到警告?",答案是当.bash_profile加载时显示which php,显示:

/usr/local/bin/php

什么?我安装了另一个版本的PHP,我忘记了(我用HomeBrew安装了它)。所以我检查了php命令的php.ini,添加了date.timezone指令,一切都很棒,现在可以正常工作。

再见!