忍者ブログ

カウンター

プロモーション

カレンダー

10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

AntinomyMy の実験室

   私のWEBアプリ実験室です!

ブログ内検索

楽天でお買い物

twitter

最新トラックバック

最新コメント

忍者アナライズ

ウェザーニュース

バーコード

本を買う

アクセス解析

Google+

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


  • 2024/11/22 01:37

PHP5.3以降のDeprecated のエラーorz

PHP の調べ物

 なにやらPHP5.3以降でエラーレベルが増えたそうな・・・・

前回はバージョン違いのPHP はエラーを吐いて邪魔をするw というブログを書いた気がw

そのときは
Strict Standards: Non-static method 」の後に何か続く物で、
エラーレベルが問題でphp.ini で、
[変更前]
error_reporting = E_ALL | E_STRICT
[変更後]
error_reporting = E_ALL

です。
つまり、<E_STRICT>をカットするとエラーメッセージでの情報は出なくなったと書きました・・・

しかし!甘かった様です。

元々<E_ALL> は全てのエラーを表示するものを意味していると公式のサイトの定義済み定数 では
書いてあり、それと同時に全てとはありますが、<E_STRICT> とは別と書いてあり、
前回の「Strict Standards」のエラーは
<E_STRICT>(コードの相互運用性や互換性を維持するために PHP がコードの変更を提案する。PHP5より)
が原因のエラーであった為、<E_ALL> と重ならない為にエラーが表示されない状況を
簡単に作ることが出来ました。

しかし、今回のエラーの
Deprecated: Assigning the return value of new by reference is deprecated in」で続くエラー
つまり「Deprecated」のエラーは、PHP5.3 からあるエラーレベル、
<E_DEPRECATED>と<E_USER_DEPRECATED>のどちらかに引っかかる様なのです。

私は英語は出来る人ではありませんがw
とりあえず、「Deprecated: Assigning the return value of new by reference is deprecated in」の中に
return value of new by reference」と言う言葉があり、これはたぶん間違えなく、
公式サイトのマニュアルにあるPHP 5.3.x で推奨されない機能 の
推奨されない機能>> new の返り値を参照で代入すること  <<
まさにコレ!なのだと思います。

 なので結論から入ると、PHP5.3 のエラーレベルによって出てしまう邪魔なエラーは
E_ALL をやめて、ばらばらなエラーを結合して使うしかなさそうです。

また、公式の定義済み定数 を見た方が明確なのですが、バージョンの部分や詳細説明を省いて簡単にして
書いていました。

1     E_ERROR              重大な実行時エラー。
2     E_WARNING            実行時の警告 (致命的なエラーではない)。
4     E_PARSE              コンパイル時のパースエラー。
8     E_NOTICE             実行時の警告。
16    E_CORE_ERROR         PHPの初期始動時点での致命的なエラー。
32    E_CORE_WARNING      (致命的ではない)警告
64    E_COMPILE_ERROR      コンパイル時の致命的なエラー。
128   E_COMPILE_WARNING    コンパイル時の警告(致命的ではない)。
256   E_USER_ERROR         ユーザーによって発行されるエラーメッセージ。
512   E_USER_WARNING       ユーザーによって発行される警告メッセージ。
1024  E_USER_NOTICE        ユーザーによって発行される注意メッセージ。
2048  E_STRICT             コードの相互運用性や互換性を維持するために PHP がコードの変更を提案する。
4096  E_RECOVERABLE_ERROR  キャッチできる致命的なエラー。
8192  E_DEPRECATED         実行時の注意。
16384 E_USER_DEPRECATED    ユーザ定義の警告メッセージ。
30719 E_ALL                サポートされる全てのエラーと警告。

ここからPHP5.3 のエラー以外をE_ALL から出してみるという手を使うなら、
E_STRICT は任意(多分これをしている人には必要ないと思うが)で
追加するかどうか決めれば良いがそれ以外はですね・・・

つまり・・・wwwwwwwwwww

php.ini の設定にですね・・・・・

error_reporting = E_ERROR|E_WARNING|E_PARSE|E_NOTICE|E_CORE_ERROR|E_CORE_WARNING|E_COMPILE_ERROR|
(長いので改行してあります。)
E_COMPILE_WARNING|E_USER_ERROR|E_USER_WARNING|E_USER_NOTICE|E_USER_DEPRECATED
っていう御馬鹿な設定をすれば私好みにきっとなるハズだ!と思っていますw

とりあえずまだやっていませんが、あまりにも眠いのに・・・ 眠いのに・・・ 書いたメモなので
コレぐらいで簡便してやろう!(して下さいw)

まぁこのブログに追伸などがなければ設定がOKだったか飽きたと思って下さいorz

セキュリティーなどの為にバージョンは上げる事をうたい文句としている様な雰囲気が
PHP に見られるが、バージョンによってエラーレベルが増えて、
エラーレベルは結局調べないといけなくなるので、
結局人それぞれ自身が使うライブラリや、自分の書いたプログラムに
合わせて全てオプション設定を書いた方が良いと思いました。

                                                 以上。

追伸


error_reporting = E_ERROR|E_WARNING|E_PARSE|E_NOTICE|E_CORE_ERROR|E_CORE_WARNING|E_COMPILE_ERROR|
(長いので改行してあります。)
E_COMPILE_WARNING|E_USER_ERROR|E_USER_WARNING|E_USER_NOTICE|E_USER_DEPRECATED

PHP5.3 のエラーは出ない様になりましたー!確認済み

それはそうでしょう。PHP5.3 のエラーと<E_STRICT>を取り除いた物なので
うまく行ったのでしょう。

大体PHPのマニュアルがあってもなかなかしない、もしくはしたくない、したくなくなる様な
オプションの量ですよね^^;


 後ですが、このやたら長い書き方以外にも

error_reporting=E_ALL&~(E_NOTICE|E_DEPRECATED)

でE_ALL からPHP5.3 の<E_NOTICE><E_DEPRECATED>を使わないで済むのがわかりました。

 php.ini の設定でも書式が使えるとは思ってませんでした。
良く考えたら「 | 」も書式でした、なんだかまだまだ覚える事はいっぱいありそうです。

                                                   追伸終わり

拍手[8回]

PR


  • 2010/06/22 13:54

コメント一覧

  • お名前
  • Email

  • コメント

  • Vodafone絵文字 i-mode絵文字 Ezweb絵文字
  • パスワード
[PR]