PHPエラーと異常メモとまとめ(1)エラー(Deprecated,Notice,Warning)

6774 ワード

【一般的なエラータイプ】
①文法の間違い
【例1】プログラム文の末尾が少なくなった';'
<?php
$username = "dee"   //    ;
echo $username;

出力:
( ! ) Parse error: syntax error, unexpected T_ECHO in D:\practise\php\Error\error1.php on line 3

Parse error:解析エラー
syntax error:構文エラー
 
【PHPでのエラーレベル】16種類
 
E_ERROR
致命的なランタイムエラー.プログラムの実行を終了します.
E_WARNING
(ランタイム警告)致命的でないrun-timeエラー.スクリプトの実行を一時停止しません.
E_PARSE
構文解析エラー
E_NOTICE
エラーとして表示される可能性があることを知らせる
E_CORE_ERROR
PHP初期化起動中に発生した致命的なエラー
E_CORE_WARNING
PHP初期化起動中に発生した警告
E_COMPILE_ERROR
致命的なコンパイルエラー
E_COMPILE_WARNING
コンパイル時の警告
E_USER_ERROR
ユーザによって生成されたエラー情報、例えばE_ERRORですが、ユーザー自身がコードにtrigger_を使用しているためです.Error()関数による
E_USER_WARNING
ユーザが生成した警告情報は、E_WARNINGですが、ユーザー自身がコードにtrigger_を使用しています.Error()関数による
E_USER_NOTICE
ユーザが生成した通知情報、例えばE_NOTICEですが、ユーザー自身がコードにtrigger_を使用していますError()関数による
E_STRICT
PHPを起動してコードの修正提案を行い、コードの相互運用性と前方互換性を確保する.
E_DEPRECATED
ランタイム通知は、起動後に将来のバージョンで正常に動作しない可能性があるコードに警告します.
E_USER_DEPRECATED
ユーザが生成した警告情報は、E_DEPRECATEDですがtrigger_Error()関数による
E_ALL
すべてのエラーと警告メッセージ
E_RECOVERABLE_ERROR
キャプチャ可能な指定エラーは、非常に危険なエラーが発生した可能性があることを示していますが、PHPエンジンが不安定な状態になっていません.このエラーがユーザー定義ハンドルによってキャプチャされていない場合(set_error_handler()を参照)、E_になります.ERRORにより、スクリプトは実行を終了します.
a.Deprescated最下位レベルのエラー-推奨しないまたは推奨しない
【例2】
<?php
if(ereg('dee', 'welcome to dee\'s medows', $matches)){
    print_r($matches);
}else{
    echo 'not found';
}

出力:
( ! ) Deprecated: Function ereg() is deprecated in D:\practise\php\Error\error1.php on line 2
Array ( [0] => dee )

deprecated:推奨されず、古い(eregメソッドの代わりにpreg_matchを使用できます)が、プログラムも結果を出力します.
 
【例3】(PHP 5.3以上)
<?php
echo mysql_escape_string('\' or 1 = 1 #');

出力:
Deprecated:mysql_escape_string():This Function id deprecated: use mysql_real_escape_string() instead. in ****
\' or 1 = 1 #

 
b.Notice通知レベルのエラー--文法に不適切な点があります.PHPは弱いタイプの言語で、変数は直接使用することを宣言しないで、ある変数を直接使用する時、noticeレベルのエラーを送ってあなたにこの変数が宣言していないことを教えます:undefined variable;配列インデックスのように、下付き文字列タイプの場合、配列インデックス(下付き)を使用するときに引用符が付けられず、phpは定数として解析し、この定数が見つからない場合は下付きとして解析します.
【例4】
<?php
echo $dee;
//      
echo 'continue';

出力:
( ! ) Notice: Undefined variable: dee in D:\practise\php\Error\error1.php on line 2
continue

 
【例5】
<?php
$userInfo = array('username'=>'dee', 'age'=>28);
echo $userInfo['username'];
echo '<hr>';
echo $userInfo[age]; //    notice      
echo '<hr>';

echo 'continue';

出力:
dee
( ! ) Notice: Use of undefined constant age - assumed 'age' in D:\practise\php\Error\error1.php on line 5
28
continue
Use of undefined constant age :       age

だからこの書き方は規範的ではありません.
 
 
c.Warning警告レベルのエラー——文法の不適切なところ;あるいは、関数は2つのパラメータを得ることを望んでいるが、関数を呼び出すときに1つのパラメータしか渡さない.あるいはパラメータのタイプ、パラメータの値が正しくありません
【例6】
<?php
settype($var, 'int'); //    var        int
var_dump($var);

//          ,warning
settype($var, 'dee');
var_dump($var);

echo 'continue';

 
出力:
int 0
( ! ) Warning: settype() [function.settype]: Invalid type in D:\practise\php\Error\error1.php on line 6
 int 0
continue

Invalid type:不正なタイプ
(未完:Fatalなど)
 
②環境エラー
 
③論理エラー