PHP5.3 和CakePHP1.2的兼容性问题(转)

最近一次升级Archlinux,PHP升级到了5.3,遇到了两个问题:

1.Arch里面PHP更换了打包的方式,PHP的Aapche模块被独立封装为php-apache模块,所以安装了php包之后还要安装 php-apache包(如果你用Apache作为你的Web server ^^ )。

2.另外就是Cakephp1.2跟PHP5.3的兼容性问题了。安装PHP5.3之后,运行Cakephp应用遇到了错误:

一个是提示strtotime()出错,最终修改php.ini的 date.timezone 解决,改为:
date.timezone = Asia/Chongqing

时区的列表可以到这里查看:http://us.php.net/manual/pt_BR/timezones.php

另外就是报类似以下的错误:

Deprecated: Assigning the return value of new by reference is deprecated…

这个有两种解决方法,一是将Cakephp升级到最新的Cakephp1.3dev版本,但是现在1.3版本并不是稳定版本,如果想继续使用1.2 版本的话,需要:

1.修改cake运行库下面cake/console/cake.php文件。

将141行的
function __initConstants() {
if (function_exists('ini_set')) {
ini_set('display_errors', '1');
ini_set('error_reporting', E_ALL);

改为:
function __initConstants() {
if (function_exists('ini_set')) {
ini_set('display_errors', '1');
if (defined('E_DEPRECATED')) {
ini_set('error_reporting', E_ALL & ~E_DEPRECATED);
} else {
ini_set('error_reporting', E_ALL);
}

2.修改cake/libs/configure.php
将292行的
if (isset($config['debug'])) {
if ($_this->debug) {
error_reporting(E_ALL);

修改为:
if (isset($config['debug'])) {
if ($_this->debug) {
if (defined('E_DEPRECATED')) {
ini_set('error_reporting', E_ALL & ~E_DEPRECATED);
} else {
ini_set('error_reporting', E_ALL);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值