Composer php Hybridauth+;编写器:如何添加自定义提供程序

Composer php Hybridauth+;编写器:如何添加自定义提供程序,composer-php,hybridauth,hybridauthprovider,Composer Php,Hybridauth,Hybridauthprovider,我正在将一个php项目转换为使用composer作为依赖项管理器 依赖项是通过我的主脚本中的这一行加载的 需要“vendor/autoload.php” 其中一个依赖项是hybridauth(版本2.9)。由于使用Composer,它在查找自定义提供程序文件时抛出“未找到文件”错误 例如,我的主控制器这样调用Hybrid: $config_file_path = dirname(__FILE__) .'/hybridauth/config.php'; $hybridauth = new Hybr

我正在将一个php项目转换为使用composer作为依赖项管理器

依赖项是通过我的主脚本中的这一行加载的

需要“vendor/autoload.php”

其中一个依赖项是hybridauth(版本2.9)。由于使用Composer,它在查找自定义提供程序文件时抛出“未找到文件”错误

例如,我的主控制器这样调用Hybrid:

$config_file_path = dirname(__FILE__) .'/hybridauth/config.php';
$hybridauth = new Hybrid_Auth( $config_file_path );
现在,这里是配置文件。我使用的提供者是“Facebooktest”。 注意,我必须通过[wrapper][path]指定路径;获取下一条错误消息的数组键

return
array(
    "base_url" => WWWROOT."/auth",
    "providers" => array(
        "Facebook" => array(
            "enabled" => true,
            "keys" => array("id" => "xxxxxxx", "secret" => "xxxxxxxx"),
            "scope" => "email",
            "trustForwarded" => false
        ),
        "Facebooktest" => array(
            "enabled" => true,
            "keys" => array("id" => "xxxxxxx", "secret" => "xxxxxx"),
            "scope" => "email",
            "trustForwarded" => false,
            "wrapper"=> array(
                "class"=>'Hybrid_Providers_Facebooktest',
                "path"=> './controllers/hybridauth/Hybrid/Providers/Facebooktest.php'
            )
        )
    ),
    "debug_mode" => false,
    "debug_file" => "",
);
错误消息(带有跟踪):

我觉得奇怪的是,我现在需要修改“vendor/hybridauth/”项目中的路径。它违背了使用依赖关系管理器的目的。当然,我一定是做错了。 你能提出建议吗

如果您最近通过composer安装了Hybridauth,那么您可能已经下载了v2.9.2,该版本在其Facebook类中包含一个bug,该bug替换了从您到Hybridauth/vendor的供应商路径,从而导致此类问题

我怀疑你是通过复制他们的Facebook类来创建Facebooktest类的,因此犯了这个错误。要么更新到他们的开发分支并复制Facebook类,要么简单地使用其他提供者类作为自定义提供者类的模板

require_once(/path/to/composer-project/vendor/hybridauth/hybridauth/hybridauth/Hybrid/thirdparty/Facebook/autoload.php): failed to open stream: No such file or directory

[vendor/bcosca/fatfree/lib/base.php:2174] Base->error()
[controllers/hybridauth/Hybrid/Providers/Facebooktest.php:61] Base->{closure}()
[controllers/hybridauth/Hybrid/Providers/Facebooktest.php:61] require_once()
[vendor/hybridauth/hybridauth/hybridauth/Hybrid/Provider_Model.php:99] Hybrid_Providers_Facebooktest->initialize()
[vendor/hybridauth/hybridauth/hybridauth/Hybrid/Provider_Adapter.php:101] Hybrid_Provider_Model->__construct()
[vendor/hybridauth/hybridauth/hybridauth/Hybrid/Auth.php:278] Hybrid_Provider_Adapter->factory()
[vendor/hybridauth/hybridauth/hybridauth/Hybrid/Auth.php:230] Hybrid_Auth::setup()
[controllers/auth-action.get.php:19] Hybrid_Auth::authenticate()