致命错误:第165行的/hybridauth/Hybrid/Endpoint.php中找不到“Hybrid_Logger”类

时间:2014-11-07 06:14:19

标签: php hybridauth

我正在干我在我的网站上部署HyBridAuth作为插件。我的功能看起来像这样。

function authenticatewith( $provider ){
                                    ini_set('display_errors','on');

            //includes

                    $config   = dirname(__FILE__) . '/hybridauth-2.1.2/hybridauth/config.php';
                                require_once( "hybridauth-2.1.2/hybridauth/Hybrid/Auth.php" );

                            $provider_name = $provider;

                            //$config = $this->getconfig($id);
                            try{
                            // initialize Hybrid_Auth with a given file
                            $hybridauth = new Hybrid_Auth( $config );

                            // try to authenticate with the selected provider
                            $adapter = $hybridauth->authenticate( $provider_name );

                            // then grab the user profile 
                            $user_profile = $adapter->getUserProfile();
                            }
                            catch( Exception $e ){
                            echo "Error: please try again!";
                            echo "Original error message: " . $e->getMessage();
                            }

                            echo "USer Details: ";
                            var_dump($user_profile);

            }   

当我尝试访问任何提供商时,我遇到致命错误。

Fatal error: Class 'Hybrid_Logger' not found in hybridauth/Hybrid/Endpoint.php on line 165

我在堆栈中没有找到这个问题的链接我虽然我会在这里提出这个问题。

谢谢&问候

5 个答案:

答案 0 :(得分:3)

在执行任何其他操作之前,请确保使用的是session_start()。

由于如果会话已经启动,使用session_start()将抛出级别E_NOTICE的错误,更好的方法是:

if(session_id() == '') {
    session_start();
}

请记住,如果用户的浏览器未启用Cookie,则由于PHP设置会话的默认值,您将遇到HybridAuth问题.use_cookies

session.use_cookies = 1 //PHP uses cookies by default

我正在处理的项目的测试用户报告看到此错误 - 很长一段时间我无法复制错误。经过长时间的调试,结果发现是一个特定于用户的浏览器配置错误(cookie被禁用)。不确定它是否能解决您的问题,但值得一提的是错误:

Fatal error: Class 'Hybrid_Logger' not found in hybridauth/Hybrid/Endpoint.php 

也可能是由于浏览器特定的设置(例如禁用的cookie)引起的。

参考文献:

http://php.net/manual/en/function.session-start.php

http://php.net/manual/en/session.security.php

答案 1 :(得分:1)

如果您无法访问config.php或者base_url错误或者您尝试从localhost访问远程应用程序服务(facebook,或者其他),则会出现此错误...您应该使用实时的domaine工作在线,如果您在windows和/ etc / hosts下,如果您使用的是基于unix的系统,则必须将以下行添加到windows / system32 / drivers / etc / hosts中:

127.0.0.1 your-domaine.extension

其中extension是以下之一:com,net或其他任何可行的方法

如果您的应用程序没有可用的域,则应用此方法 否则你需要指定你的www域才能正常工作......

希望它有用

答案 2 :(得分:1)

我有完全相同的错误,我发现会话全局变量没有所需的值(" CONFIG"),这是因为我将base_url设置为不同于我正在测试。更具体一点:我访问www.mywebsite.com,base_url设置为mywebsite.com。通过将base_url设置为www.mywebsite.com来修复它。 我还建议像这样重定向到www:.htaccess - how to force "www." in a generic way?

答案 3 :(得分:0)

require_once( "hybridauth-2.1.2/hybridauth/Hybrid/Auth.php" );

不包含config.php包含的完整路径。

答案 4 :(得分:0)

使用session_start(); 在你做任何其他事情之前..