Slim框架致命错误:未捕获异常'InvalidArgumentException',消息'无法创建LogWriter

时间:2015-09-09 07:11:50

标签: php google-app-engine slim

我最近开始使用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}(Object(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')在D:\ Liftmo \ Liftmo.com \ api \ Slim \ LogWriter.php on第60行

我逐行完成代码,似乎问题在于

$db = new DbHandler();

我很困惑,因为我的代码中的其他地方都没有使用该类。

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

如果有人可以帮助我,我真的很感激。我从HERE获取了身份验证。字面上无法在任何地方找到此问题。使用Google App Engine和Cloud SQL进行部署。

1 个答案:

答案 0 :(得分:1)

我在我的应用中遇到了同样的问题,我发现这两个提示有很多帮助:

  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/

  3. 希望它有所帮助!