存在しない関数を呼び出したときの致命的エラーです。関数名の綴りや定義漏れが原因です。
<?php
$s = "progo";
echo strlan($s);
<?php
$s = "progo";
echo strlen($s); // 5
▶ 修正済みコードを実行エディタで開く
エラーに出ている関数名を、正しい綴りに直します。組み込み関数は公式のスペルを確認しましょう。自作関数の場合は定義してから呼ぶか、関数定義がファイルに含まれているか確認します。
関数名で見当がつきます。
strlan→strlen。関数名は大小無視だがアンダースコアの位置ミスが多い(array_merge)。curl_init(curl)、mb_strlen(mbstring)、imagecreate(gd)、json_encode(json)など。php -m で有無を確認し、php.ini の extension=curl を有効化してWebサーバー再起動。namespace App; 内では未修飾の関数名が現在の名前空間で探され、無ければグローバルにフォールバックするが、同名関数があると衝突。先頭に \ を付けて \strlen($s) と書くと確実。require_once、Composer なら require 'vendor/autoload.php';。アップグレード後に急に出た場合はこれ。create_function()(8.0削除→無名関数へ)、each()(8.0削除→foreach)、split()(7.0削除→preg_split / explode)、mysql_*()(7.0削除→mysqli / PDO)。
<?php
if (function_exists('mb_strlen')) {
echo mb_strlen('こんにちは'); // 5
} else {
echo strlen('こんにちは'); // バイト数にフォールバック
}
▶ function_exists() のコードを実行エディタで開く