簡體   English   中英

php composer自動加載類未找到錯誤

[英]php composer autoload class not found error

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

//Include Composer's autoloader
include 'vendor/autoload.php';

public function test_auth() {       
try{
      $hybridauth = new Hybridauth\Hybridauth($config);

        //Attempt to authenticate users with a provider by name
        $adapter = $hybridauth->authenticate('Twitter'); 

        //Returns a boolean of whether the user is connected with Twitter
        $isConnected = $adapter->isConnected();

        //Retrieve the user's profile
        $userProfile = $adapter->getUserProfile();

        //Inspect profile's public attributes
        var_dump($userProfile);

        //Disconnect the adapter 
        $adapter->disconnect();
    }
    catch(\Exception $e){
        echo 'Oops, we ran into an issue! ' . $e->getMessage();
    }
}

遇到未捕獲的異常

類型:錯誤

消息:未找到“Hybridauth\\Hybridauth\\Hybridauth”類

文件名:C:\\xampp\\htdocs\\paymatrix_v2\\application\\controllers\\Hauth.php

行號:35

回溯:

文件:C:\\xampp\\htdocs\\paymatrix_v2\\index.php 行:294 功能:require_once

composer.json 文件

{
"description": "The CodeIgniter framework",
"name": "codeigniter/framework",
"type": "project",
"homepage": "https://codeigniter.com",
"license": "MIT",
"support": {
    "forum": "http://forum.codeigniter.com/",
    "wiki": "https://github.com/bcit-ci/CodeIgniter/wiki",
    "irc": "irc://irc.freenode.net/codeigniter",
    "source": "https://github.com/bcit-ci/CodeIgniter"
},
"require": {
    "php": ">=5.2.4",
    "mailgun/mailgun-php": "^2.1",
    "php-http/curl-client": "^1.6",
    "guzzlehttp/psr7": "^1.3",
    "aws/aws-sdk-php": "3.*",
    "pipl/piplapis-php" : "^5.0",
    "hybridauth/hybridauth": "^2.9"
},
"require-dev": {
    "mikey179/vfsStream": "1.1.*",
    "aws/aws-sdk-php": "dev-master"
},
"autoload": {
        "classmap": ["vendor/pipl/piplapis-php/src","vendor/pipl/"]
}

}

自動加載.php

// autoload.php @generated by Composer

require_once __DIR__ . '/composer/autoload_real.php';

return ComposerAutoloaderInit9da23362304113093d59b5cbcc0e2b35::getLoader();

混合認證位置

vendor/hybridauth/hybridauth/

該文件已包含在 codeigniter 核心文件中。 不需要在你的類文件中再次包含

include 'vendor/autoload.php';  

在您的職能范圍內

public function test_auth() {
  // Before code
    $config = [
        'callback' => 'https://example.com/path/to/script.php',
        'keys' => [ 'key' => 'your-twitter-consumer-key', 'secret' => 'your-twitter-consumer-secret' ]
    ];

    try {
        $twitter = new Hybridauth\Provider\Twitter($config);

        $twitter->authenticate();

        $accessToken = $twitter->getAccessToken();
        $userProfile = $twitter->getUserProfile();
        $apiResponse = $twitter->apiRequest( 'statuses/home_timeline.json' );
    }
    catch(\Exception $e){
        echo 'Oops, we ran into an issue! ' . $e->getMessage();
    }

        }

從包 README 檢查用法

https://github.com/hybridauth/hybridauth

我也遇到過同樣的問題。 當我在根位置使用 Composer 安裝軟件包時,它仍然說找不到第三方類。 所以這是我的解決方案。 首先,我將“composer_autoload”配置更改為 TRUE。

$config['composer_autoload'] = TRUE;

默認情況下,更改上述配置后,Codeigniter 在 APPPATH(應用程序文件夾)下查找供應商/自動加載文件,這是不正確的。 所以我將常量更改為 FCPATH(根路徑),因為根是使用 Composer 安裝第三方軟件包的正確路徑。

System/core/Codeigniter.php:165更改

if ($composer_autoload === TRUE)
{
    file_exists(APPPATH.'vendor/autoload.php')
        ? require_once(APPPATH.'vendor/autoload.php')
        : log_message('error', '$config[\'composer_autoload\'] is set to TRUE but '.APPPATH.'vendor/autoload.php was not found.');
}

if ($composer_autoload === TRUE)
{
    file_exists(FCPATH.'vendor/autoload.php')
        ? require_once(FCPATH.'vendor/autoload.php')
        : log_message('error', '$config[\'composer_autoload\'] is set to TRUE but '.FCPATH.'vendor/autoload.php was not found.');
}

最后,運行

作曲家轉儲自動加載

如果仍然無法正常工作。 快樂編碼!!!

暫無
暫無

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

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