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);
        }

你可能感兴趣的:(apache,PHP,Web,.net,cakephp)