[英]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 檢查用法
我也遇到過同樣的問題。 當我在根位置使用 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.