最近、サーバーをPHP 7.0を使用するようにアップグレードしました。しかし、このアップグレード後、Webアプリケーションが機能していないことに気付きました。Apache2error.logファイルを調べたところ、このエラーが見つかりました。 :
PHPの致命的なエラー:キャッチされないエラー:クラス 'Zend_Loader_Autoloader'が見つかりません
コマンドラインで「php-v」を実行すると、次のように表示されます。
PHP 7.0.0-5 + deb.sury.org〜trusty + 1(cli)(NTS)Copyright(c)1997-2015 PHP Group Zend Engine v3.0.0、Copyright(c )1998-2015 Zend Technologies with Zend OPcache v7.0.6-dev、Copyright(c)1999-2015、by Zend Technologies
フレームワークがインストールされているように見えますが、CLIのみ(Apacheではありません)です。
Apacheで有効にする方法を知っている人はいますか?
ありがとう。
php -v
から表示されているものは、使用しているアプリケーションフレームワーク(この場合はZend Framework)を反映していません。問題は、実行しているアプリケーションレベルのコードにある可能性が高く、Zend Framework1アプリのようです。
ORMレイヤーにDoctrine)を使用していたZF1アプリで非常によく似たエラーが発生しました。Doctrineのクラスローダーで、PHP = 7 PHP 7が変数の解釈を変更するいくつかの方法を処理します。library/Doctrine/Common/ClassLoader.php
の224行目あたりで次のように変更しました。
} else if ($loader[0]::$loader[1]($className)) { // array('ClassName', 'methodName')
return true;
}
に:
} else if {
if (substr(PHP_VERSION_ID, 0, 1) == '7') {
$method = $loader[0] . '::' . $loader[1];
if ($method($className)) { // array('ClassName', 'methodName')
return true;
}
}
else {
if ($loader[0]::$loader[1]($className)) {
return true;
}
}
}
これで問題が具体的に解決されるかどうかはわかりません。これが機能しない場合は、PHPスクリプトでZendオートローダーを明示的に要求してみてください(library/Zend
がインクルードパスにあると想定):
require_once 'Loader/Autoloader.php';
お役に立てば幸いです。