1000本突破
1000本突破

PHP5.3で昔のCakePHPをソースをいじったら

まっちー

アストロデオのHPがリニューアルしました!

おめでとうございます!! ありがとうございます!!

ま、僕は今回な~んもしてないです。みんなが頑張ってデザイン組んだりカメラ持って撮影してる横で笑ってただけです。ニコニコ動画で抱腹絶倒な動画を見て文字通り腹を抱えて笑っていただけです。

一人だけ何もしてないとか感じ悪いんで、今日のところは僕がブログを更新してリニューアル作業に花を添えたいと思います。

ここんとこ更新もサボリ気味でしたしね。またちょいちょい更新を頑張っていけたらいいんですか?

それに何といっても今日は5月11日で切れ目も良いですからね。心機一転するにはちょうど良いかもしれんです。

今日、5月11日は「技術の日」なんですよ。だから技術者の我々に取っちゃある意味一つの節目の日なんですよ。

まあ、どうして今日が技術の日なのかってのは、核実験に由来するらしいんで、IT的な技術に携わる僕らにはあまり関係ないんですけどねww

とはいえ、最近は何か技術的な考察があったときにはここじゃなくて個人ブログの方に書くようにしてたので、とりわけ今ここで書くことってないんですよね……せっかく意気込んだところあれなんですけど。

だから、すっごい今さらなんだけどずっと書くのを忘れてたことをまた忘れないうちに書いとこうと思います。本当に今さらなんだけど、もしかしたらいつか誰かの役に立てるかもしれない。

以前、PHP5.3でEC-CUBEを動かしたら何やら大変なことが起きたぞってな記事を書きましたが、CakePHPでも同様なことが起こりました。

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

↑こんな感じのエラー。まあ原因も前回と同じで、PHPのバージョンが新しくなったのが原因です。昔に作ったサイトを手直ししようとしてローカル環境で見ると、こんなエラーが出ることがあるようです。

CakePHPの場合の解決方法は、cake/libsフォルダの中にあるconfigure.phpのwriteメソッドをいじればおkです。

if (isset($config['debug'])) {
    if ($_this->debug) {
        error_reporting(E_ALL);

        //このif文を追加
        if(error_reporting() > 6143) {
            error_reporting(E_ALL & ~E_DEPRECATED);
        }

        if (function_exists('ini_set')) {
            ini_set('display_errors', 1);
        }

        if (!class_exists('Debugger')) {
            require LIBS . 'debugger.php';
        }

        if (!class_exists('CakeLog')) {
            require LIBS . 'cake_log.php';
        }

        Configure::write('log', LOG_NOTICE);
    } else {

~以下略~

cakeフォルダの中身を直接いじるのはあまり良くないような気はするんですけど、まあこれくらいなら良いよね。たぶん。

もっとも、今回みたいにlibsの直下にあるファイルをapp側にコピーしていじるとかって、できるんですかね? もしできるばあい、どこにコピーすればいいんだろう? appの直下?