簡體   English   中英

Slim框架致命錯誤:未捕獲異常'InvalidArgumentException',消息'無法創建LogWriter

[英]Slim framework Fatal error: Uncaught exception 'InvalidArgumentException' with message 'Cannot create LogWriter

我最近開始使用Slim框架。 我目前正在嘗試使用中間件進行身份驗證。 這是調用中間件的地方:

$app->post('/profile', 'authenticate', function () {
     // code here
}

這是我的中間件負責身份驗證的地方:

function authenticate(\Slim\Route $route) {
    // Getting request headers
    $headers = apache_request_headers();
    $response = array();
    $app = \Slim\Slim::getInstance();

    // Verifying Authorization Header
    if (isset($headers['Authorization'])) {
        $db = new DbHandler();

        // get the api key
        $api_key = $headers['Authorization'];
        // validating api key
        if (!$db->isValidApiKey($api_key)) {
            // api key is not present in users table
            $response["error"] = true;
            $response["message"] = "Access Denied. Invalid Api key";
            echoRespnse(401, $response);
            $app->stop();
        } else {
            global $user_id;
            // get user primary key id
            $user_id = $db->getUserId($api_key);
        }
    } else {
        // api key is missing in header
        $response["error"] = true;
        $response["message"] = "Api key is misssing";
        echoRespnse(400, $response);
        $app->stop();
    }
};

我嘗試POST調用時收到此錯誤。 其他不需要身份驗證的調用都能正常工作

致命錯誤:未捕獲的異常'InvalidArgumentException',消息'無法創建LogWriter。 無效的資源句柄。' 在D:\\ Liftmo \\ Liftmo.com \\ api \\ Slim \\ LogWriter.php:60堆棧跟蹤:#0 D:\\ Liftmo \\ Liftmo.com \\ api \\ Slim \\ Slim.php(191):Slim \\ LogWriter - > __ construct (false)#1 D:\\ Liftmo \\ Liftmo.com \\ api \\ Slim \\ Helper \\ Set.php(228):Slim \\ Slim-> Slim {closure}(Object(Slim \\ Helper \\ Set))#2 D: \\ Liftmo \\ Liftmo.com \\ api \\ Slim \\ Helper \\ Set.php(88):Slim \\ Helper \\ Set-> Slim \\ Helper {closure}(對象(Slim \\ Helper \\ Set))#3 D:\\ Liftmo \\ Liftmo.com \\ api \\ Slim \\ Helper \\ Set.php(185):Slim \\ Helper \\ Set-> get('logWriter')#4 D:\\ Liftmo \\ Liftmo.com \\ api \\ Slim \\ Slim.php(196) ):Slim \\ Helper \\ Set-> offsetGet('logWriter')#5 D:\\ Liftmo \\ Liftmo.com \\ api \\ Slim \\ Helper \\ Set.php(228):Slim \\ Slim-> Slim {closure}(Object (Slim \\ Helper \\ Set))#6 D:\\ Liftmo \\ Liftmo.com \\ api \\ Slim \\ Helper \\ Set.php(88):Slim \\ Helper \\ Set-> Slim \\ Helper {closure}(對象(Slim \\ Helper \\ Set))#7 D:\\ Liftmo \\ Liftmo.com \\ api \\ Slim \\ Slim.php(234):Slim \\ Helper \\ Set-> get('log')#8 D:\\ Liftmo \\ Liftmo.com \\ api \\ Slim \\ Slim.php(402):Slim \\ Slim - > __ get('log')在第60行的D:\\ Liftmo \\ Liftmo.com \\ api \\ Slim \\ LogWriter.php

我逐行完成代碼,似乎問題出在線上

$db = new DbHandler();

我很困惑,因為我的代碼中的其他地方都沒有使用該類。

require_once 'include/DbHandler.php'; // DbHandler included here at the top

如果有人可以幫助我,我真的很感激。 我從這里接受了認證。 字面上無法在任何地方找到此問題。 使用Google App Engine和Cloud SQL進行部署。

查看問題評論:

使用Google App Engine無法對php://stderr進行寫訪問。

根據https://cloud.google.com/appengine/articles/logging,/ /var/log/app_engine/custom_logs提供了寫訪問權限。 (沒試過自己)

我在我的應用程序中遇到了同樣的問題,我發現這兩個提示有很多幫助:

  1. 在存儲在應用根目錄中的php.ini文件中設置google_app_engine.disable_readonly_filesystem = 1屬性。 參考 - > https://gae-php-tips.appspot.com/2015/03/

  2. 使用不同於deafault的方法來處理日志記錄,以便能夠看到代碼或數據庫的哪個部分存在問題。 我找到了一個很好的建議: https//leolutz.com/2014/11/slim-framework-on-google-app-engine/

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM