文件的真实,完整内容:
getMessage(); }
DateTime构造函数接受一个字符串,如果它无法解析它,它应该抛出异常.这运行正常我的本地机器上,但在我的远程服务器中的一个例外没有被捕获(又一遍,我正在使用的try/catch和完全相同的代码):
致命错误:未捕获的异常'Exception',消息'DateTime :: __ construct()[function.DateTime --- construct]:无法解析位置0(l)处的时间字符串(lol):在时区中找不到时区数据库'在/var/www/html/site_com/rez/date.php:9堆栈跟踪:#0 /var/www/html/site_com/rez/date.php(9):DateTime - > __ construct('lol' )第9行/var/www/html/site_com/rez/date.php中抛出#1 {main}
未捕获异常的远程服务器的设置:
PHP版本5.2.5
启用日期日期/时间"Olson"时区数据库版本2007.9时区数据库内部默认时区America/Chicago
指令本地值主值date.default_latitude 31.7667 31.7667 date.default_longitude 35.2333 35.2333 date.sunrise_zenith 90.583333 90.583333 date.sunset_zenith 90.583333 90.583333 date.timezone no value no value
我的本地设置在哪里工作:
PHP 5.2.10
日期/时间支持已启用"Olson"时区数据库版本0.system时区数据库内部默认时区系统/本地时间
指令本地值主值date.default_latitude 31.7667 31.7667 date.default_longitude 35.2333 35.2333 date.sunrise_zenith 90.583333 90.583333 date.sunset_zenith 90.583333 90.583333 date.timezone no value no value
在本地,它捕获异常并打印出错误.在date.timezone
双方没有任何价值.
也许这只是我内部系统的时区关闭?我的本地方框是Ubuntu而我的遥控器是CentOS,它们可能不一致但是PHP应该不会捕获异常吗?
仅供参考我无法在远程复选框上更新PHP,因为我没有管理员权限.
我的赌注是PHP错误.我知道PHP曾经遇到过捕获构造函数抛出异常的问题,而这似乎就是这里发生的事情.
因为这是一个错误,你的选择是
更新服务器的PHP版本; 你说这不是一个选择
使用strtotime()
查找日期,如果您需要或想要访问的面向对象的风格DateTime
,赶上与错误strtotime()
例如:
getMessage(); }