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

公開日: 

PHP5.3.0がいつの間にか出ていた。
PHP5.3.0の環境でAMFPHPをやってみたんだが、
http://localhost/amfphp/browser/
にアクセスすると・・・

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

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

sponcer link


参考にしたサイト。
http://matthiasvanneste.wordpress.com/2009/09/18/php-5-3-0-and-amfphp/
これによると、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)

  • このエントリーをはてなブックマークに追加
  • Pocket
PAGE TOP ↑