0

Kohana :: $ logで「非オブジェクトでのメンバー関数add()の呼び出し」というエラーが発生します

ログインapplication/logsディレクトリがありません。私が説明したエラーはapache error_logにあります。これはそれがどのように見えるかです

[2012年8月17日金曜日17:07:09][エラー][クライアントMY.IPA.DDR.ESS]PHP致命的なエラー:/ var / www / html / application内の非オブジェクトでメンバー関数add()を呼び出す8行目の/classes/kohana/exception.php

これは私のエラーコントローラーです。

<?php
class Kohana_Exception extends Kohana_Kohana_Exception {
    public static function handler(Exception $e) {
        if (Kohana::DEVELOPMENT === Kohana::$environment) {
            parent::handler($e);
        } else {
            try {
                Kohana::$log->add(Log::ERROR, "own exception handler");
                Kohana::$log->add(Log::ERROR, parent::text($e));
                $attributes = array('action' => 500, 'message' => rawurlencode($e->getMessage()));
                if ($e instanceof HTTP_Exception) {
                    $attributes['action'] = $e->getCode();
                }
                // Error sub-request.
                echo Request::factory(Route::get('error')->uri($attributes))->execute()->send_headers()->body();
            }
            catch(Exception $e) {
                // Clean the output buffer if one exists
                ob_get_level() and ob_clean();
                // Display the exception text
                echo parent::text($e);
                // Exit with an error status
                exit(1);
            }
        }
    }
}

コードからは、Kohana::$logまだ初期化されていないようです。しかし、このコードは長い間機能していました。なぜそれが機能しなくなったのですか?

私はFedora15PHP5.3.13でKohana-3.2を使用しています

4

3 に答える 3

1

私はこの問題を解決しました。この問題が他のコハナ開発者に発生し、彼がグーグルからここに来た場合、ここに解決策があります。

ルートシェルから次のコマンドを実行します。サーバーを再起動した場合は、サーバーを再実行する必要があることを忘れないでください。

setsebool -P httpd_unified 1

追加情報:それを追跡する方法。

これらの場所を確認してください

  1. Apacheエラーログ
  2. コハナはアプリケーションディレクトリにログを記録します(デバッグのためにログを記録する場合)
  3. を確認してください/var/log/messages

SElinuxに問題がある場合は、にログエントリがあります/var/log/messages。これは私が得たものです。

setroubleshoot:SELinuxは、/ usr / sbin/httpdがディレクトリ/var/ www / html / application/cacheへの書き込みアクセスを妨げています。完全なSELinuxメッセージの場合。シーラート-l087dfdb5-c7de-4238-8e6b-a713213a456dを実行します

述べたように、実行sealert -l 087dfdb5-c7de-4238-8e6b-a713213a456dすると、私が解決策として書いたコマンドが明らかになります。

于 2012-08-17T23:38:56.613 に答える
0

次のことを確認してください。

Log::instance()->add(Log::ERROR, "own exception handler");

動作します。現在のKohanaのドキュメントには、$ logの使用は引き続き機能するはずであることが示されているようですが、例外処理の前にどこかで設定が解除される可能性があります。ただし、Logクラスからインスタンスを取得できるようにする必要があります。

于 2012-08-17T23:09:04.823 に答える
0

権限に問題がある可能性があります。私の場合、プロジェクトファイルにアクセスできなかったのはhttpdサービス(apache2)でした。これが残忍な解決策です(セキュリティ状況が許す場合にのみ実行してください):

$ sudo chmod -R 0777 / var / www / html / mysite /

差出人: move_uploaded_fileは、すべての構成後に「ストリームを開くことができませんでした:アクセスが拒否されました」というエラーを表示します

于 2017-09-12T13:42:04.847 に答える