ローカルでは動作するLaravelアプリケーションが本番サーバー(Plesk)で「mb_split not found」「DOMDocument not found」エラーが出る場合の具体的な解決手順を解説します。
こんな悩みはありませんか?
「ローカル環境では完璧に動いていたLaravelアプリケーションを本番サーバーにアップしたら、突然『mb_split not found』や『DOMDocument not found』というエラーが...」
こんな経験、ありませんか?実は先日、弊社でも同様のケースが発生しました。
ローカル環境では問題なく動作していたクライアント様のECサイト(商品情報をCSVで一括インポートする機能付き)を本番環境(Plesk)にデプロイした際、以下のエラーが発生したのです。
Call to undefined function mb_split()
Class 'DOMDocument' not found
結果的に、サイトが真っ白になり、商品登録機能が完全に停止してしまいました。
なぜローカルでは動くのに本番で動かないのか?
PHP拡張機能の違いが原因
この問題の根本原因は、ローカル環境と本番環境のPHP拡張機能の差にあります。
ローカル開発環境(XAMPP、MAMP等)では:
mbstring拡張機能がデフォルトで有効xml拡張機能も標準でインストール済み- 開発者が意識せずに使える状態
本番環境(特にPlesk)では:
- サーバー管理者が個別に有効化する必要がある
- セキュリティ上、不要な拡張機能は無効化されている
- 複数のPHPバージョンが混在している場合が多い
具体的なエラーの意味
// mb_split関数を使った文字列分割(mbstring拡張機能が必要)
$items = mb_split(',', $csv_line);
// DOMDocumentクラス(xml拡張機能が必要)
$dom = new DOMDocument();
これらの機能は、多言語対応や XML/HTML処理 で頻繁に使用されるため、Laravelアプリケーションでは必須と言えます。
Plesk環境での解決手順
ステップ1: 現在のPHP設定を確認
まず、phpinfo()で現在の設定を確認します。
<?php
// 一時的にphpinfo.phpファイルを作成
phpinfo();
?>
確認すべきポイント:
- PHPバージョン
- インストール済み拡張機能一覧
mbstringとxmlの有無
ステップ2: Pleskコントロールパネルでの設定
- Pleskにログイン
- 「ウェブサイトとドメイン」 を選択
- 対象ドメインの 「PHP設定」 をクリック
- 「拡張機能」タブ を選択
ステップ3: 必要な拡張機能を有効化
以下の拡張機能を チェックボックスで有効化:
☑ mbstring # 多バイト文字列関数
☑ xml # XML処理関数
☑ dom # DOMDocument関連
☑ libxml # XMLライブラリ(依存関係)
重要: 設定変更後は必ず 「適用」ボタンをクリック してください。
ステップ4: 複数PHPバージョン環境での注意点
Plesk環境では、よく 複数のPHPバージョンが共存 しています。
よくある失敗例:
- PHP 7.4で拡張機能を有効にしたが、アプリケーションがPHP 8.1で動いている
- ドメイン設定とCLI設定のPHPバージョンが異なる
正しい確認方法:
# コマンドラインでPHPバージョンを確認
php -v
インストール済み拡張機能を確認
php -m | grep -E "(mbstring|xml|dom)"
ステップ5: .htaccessでの追加設定(必要に応じて)
場合によっては、.htaccessファイルでPHPバージョンを明示的に指定する必要があります。
# .htaccess
# PHPバージョンを明示的に指定(Pleskの場合)
AddHandler application/x-httpd-php81 .php
または
AddType application/x-httpd-php81 .php
実際の解決事例
弊社で担当したECサイトの事例では、上記の手順により 10分程度で問題を解決 できました。
解決前の状況:
- 商品一括登録機能が使えない
- ユーザー登録時にエラー発生
- サイトの一部機能が停止
解決後の変化:
- 全機能が正常動作
- CSV一括インポートで1000件の商品を10秒で処理
- クライアント様が安心してサイト運営を開始
クライアント様からは「技術的な問題を素早く解決してもらい、予定通りにサイトオープンできました」とお喜びの声をいただきました。
よくある追加エラーと対処法
curl拡張機能エラー
Call to undefined function curl_init()
解決策: curl拡張機能も同様に有効化
OpenSSL関連エラー
SSL certificate problem
解決策: openssl拡張機能の有効化 + SSL証明書の確認
メモリ制限エラー
Fatal error: Allowed memory size exhausted
解決策: PHP設定でmemory_limitを増加
; php.iniまたはPleskのPHP設定で
memory_limit = 256M
予防策:デプロイ前のチェックリスト
今後同様の問題を避けるため、デプロイ前に以下を確認することをおすすめします:
必須PHP拡張機能の確認
<?php
// deploy_check.php(デプロイ前チェック用)
$required_extensions = [
'mbstring',
'xml',
'dom',
'curl',
'openssl',
'pdo',
'pdo_mysql'
];
foreach ($required_extensions as $ext) {
if (!extension_loaded($ext)) {
echo "⚠ 拡張機能 {$ext} が無効です\n";
} else {
echo "✓ 拡張機能 {$ext} は有効です\n";
}
}
?>
composer.jsonでの依存関係明示
{
"require": {
"php": "^8.1",
"ext-mbstring": "*",
"ext-xml": "*",
"ext-dom": "*",
"ext-curl": "*"
}
}
これにより、インストール時に不足している拡張機能があれば警告が表示されます。
まとめ:次にやるべきこと
本番環境でのPHP拡張機能エラーは、適切な手順で対処すれば短時間で解決可能です。
今すぐやるべきこと:
- 現在のサーバー環境を確認(PHPバージョン、拡張機能)
- Pleskで必要な拡張機能を有効化
- デプロイ前チェックスクリプトを作成
- composer.jsonに拡張機能の依存関係を明記
ただし、サーバー環境によっては 管理者権限が必要な場合や、特殊な設定が必要な場合 もあります。
「自分で設定するのは不安...」「時間がない...」 という方は、ぜひお気軽にご相談ください。弊社では、Laravel アプリケーションのデプロイから運用まで、トータルサポートいたします。
20年以上の実績で培った知識で、確実かつ迅速に問題を解決いたします。