概要
状態:-
閲覧数:12,180
投稿日:2010-04-26
更新日:2017-05-25
未定義の関数(もしくはメソッド)を呼び出そうとした際に表示されるエラー
・1.本当に、該当関数を定義していないケース
・2.関数は定義したが、呼び出そうとした際、誤った関数名で呼び出したため、結果的に該当関数を見つけることができず、このエラーが発生するケース
・3.クラス内でメソッドを定義し、そのメソッド名で呼び出しをかけるも、呼び出し形式が違っていたため(かつ、文法的には正しかった場合)、該当メソッドを呼び出すことが出来ないため、このエラーが発生するケース
未定義の関数とは?
・1.本当に、該当関数を定義していないケース
・2.関数は定義したが、呼び出そうとした際、誤った関数名で呼び出したため、結果的に該当関数を見つけることができず、このエラーが発生するケース
・3.クラス内でメソッドを定義し、そのメソッド名で呼び出しをかけるも、呼び出し形式が違っていたため(かつ、文法的には正しかった場合)、該当メソッドを呼び出すことが出来ないため、このエラーが発生するケース
対処法1、2
1.関数未定義
関数未定義の場合
・関数を定義する
function hoge(){
処理内容
}
2.関数名間違い
「呼び出す関数名」と「定義関数名」が一致していない場合
・一致させる
function hoge(){
処理内容
}
hoge();
対処法3
3.呼び出し形式間違い
メソッド呼び出し形式が違っていた(かつ文法的に正しかった)場合
・正しい呼び出し形式へ変更
修正前
class Piyo{
function hoge(){
}
function puyo(){
hoge();
}
}
修正後
class Piyo{
function hoge(){
}
function puyo(){
$this->hoge();
}
}
遭遇例
エラー発生例
発生状況
・アプリを異なる環境へコピペしていた際に発生
includeパス
・正しい
関数名
・正しい
関数
・存在している
▼index.php
<?php
require_once( "token.php" );
check_token();
▼token.php
<?
function check_token(){}
修正例
先頭<?の後にphpを付与
▼token.php
<?php
function check_token(){}
同じPHPバージョンなのに、コピー元環境で正常動作していた理由
一つ上の階層に配置されていた.htaccess
AddHandler application/x-httpd-phpcgi .php