Windows環境にEC-CUBEを入れてみる

入れてようとしたけど、エラー連発で、早速なえたorz

環境は
WindowsXP
xampp1.7.2
(PHP 5.3.0 / MySQL 5.1)
EC-CUBE 2.4.1

エラーメッセージは・・

Deprecated: Assigning the return value of new by reference is deprecated in C:\Program File・・・
Deprecated: Assigning the return value of new by reference is deprecated in C:\Program File・・・
Deprecated: Assigning the return value of new by reference is deprecated in C:\Program File・・・

って感じです。

調べてみると
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=4810&forum=4

同じ現象で苦しんでいる人発見。

xamppのバージョンを
1.7.2 を 1.7.1にしたら問題なしになるらしい。
xamppが悪いのか・・?

というより、1.7.2に同梱されているPHP 5.3.0
ってのが、EC-CUBE2.4.1との相性が悪いっぽい。

EC-CUBEでは、

$obj =& new test();

といった形でオブジェクト生成しているけど、
"=&"ってのが、
http://php.net/manual/ja/migration53.deprecated.php
PHP 5.3.x系では推奨されてないっぽいね。

んもう。

改善策は
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=4759&forum=10&viewmode=flat&order=ASC&start=10

に書かれていた。感謝!!

error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);

define("DEFAULT_DSN", "mysql://");

がミソですかね。
※メッセージ封じ込めているだけなのもあるけど。。

というわけで、無事に
windowsに、EC-CUBEいれることができました。

まぁ、デバッグするだけなんですけどね。

【追記】

$obj =& new test();

そもそも、なぜ "=&"と表記しているのか
気になったので(というか知らなかっただけですが、、)調べてみた。

どうやら、
= は コピーなのに対して
=& はポインタが渡されるらしい。

PHPの悪癖(?)に慣れてしまうと
こういう考え方がつい漏れてしまうのが情けないところです。。