Categories: PHP

PHP5.3.0でAMFPHPを実行できない

PHP5.3.0がいつの間にか出ていた。
PHP5.3.0の環境でAMFPHPをやってみたんだが、


- localhost
にアクセスすると・・・

Error retrieving service info:
Function eregi_replace() is deprecated
C:\xampp\htdocs\visualQandA\amfphp\core\shared\util\MethodTable.php on line 505

とかエラーでてた。
ので、その解決策の備忘録。


参考にしたサイト。

Anyone who is messing around with amfphp and has updated their PHP to version 5.3.0 or updated their Wampserver to version 2.0i, using PHP 5.3.0,  will probably have encountered the following warni…
PHP 5.3.0 and AMFPHP - blog / Matthias Vanneste
これによると、2ヶ所やらないといけない事があるらしい。

1. php.iniを編集してdeprected warningsをdisableにする

2. amfphpのcoreファイルをいじる

結論からいうと2.だけでやればおk
だけど、一応1.の方法も解説しておく。
1.の方法
php.iniをエディタでひらきます。
514行目らへんに “error_reporting = ~~”てのがあります。
これを

error_reporting = E_ALL & ~E_NOTICE

にかえて保存。
んでapache再起動。
2.の方法
amfphp/core/shared/util/MethodTable.php
をエディタで開く。
505行目に、

$comment = eregi_replace(“\n[ \t]+”, “\n”, trim($comment));
$comment = str_replace(“\n”, “\\n”, trim($comment));
$comment = eregi_replace(“[\t ]+”, ” “, trim($comment));

てのがある。
これを、

$comment = preg_replace(“`\n[ \t]+`U”, “\n”, trim($comment));
$comment = str_replace(“\n”, “\\n”, trim($comment));
$comment = preg_replace(“`[\t ]+`U”, ” “,trim($comment));

これに書き換えて保存。
これだけで、動き始めます。
PHP5.3.0以降、eregi_replace()関数は非推奨になって、この関数をコールするとE_DEPRECATEDが発生するようになったらしい。
PHP6.0.0では完全に消えるようだ。
それで、1,の方法ではとりあえずE_DEPRECATEDを無視するように設定して一時しのぎしてるようだ。
参考
PHP 5.3だとCakePHPで大量のエラー
まぁとりあえず動いてよかったよかったー!
PHP 逆引きレシピ (PROGRAMMER’S RECiPE)

mogmet

View Comments

Share
Published by
mogmet