Я пытаюсь загрузить файл PHP для проверки подлинности в моем контроллере Symfony.
Я должен использовать его с require_once
(не могу его скопировать). Он содержит класс для идентификации на моем веб-сайте.
Это то, что я пробовал до сих пор:
/**
* @Route("/login")
* @Template()
*/
public function loginAction()
{
require_once("/usr/share/php/ariseid/client/OAuthAriseClient.php");
require_once("./config.inc.php");
$consumer = OAuthAriseClient::getInstance($consumer_key, $consumer_secret,$consumer_private_key);
$consumer->authenticate();
if ($consumer->has_just_authenticated()) {
session_regenerate_id();
$consumer->session_id_changed();
}
if ($consumer->is_authenticated()) {
$results = $consumer->api()->begin()
->get_identifiant()
->done();
try {
$_SESSION['AriseID'] = $results[0]();
}
catch(OAuthAPIException $e) {
echo "Erreur : ".$e->getMessage();
}
}
return $this->render('SlothBundle:Default:index.html.twig', array(
'islogged' => $consumer->is_authenticated(),
));
}
Это ошибка, которую я получаю:
CRITICAL - Fatal Error: Class'SlothBundle\Controller\OAuthAriseClient 'не найден Контекст: {"type": 1, "file": "/home/users/assoces/separatiiste/html/src/SlothBundle/Controller/DefaultController.php", "линия": 39, "уровень": -1, "стек": [{ "функция": "тип" "loginAction": "->", "класс": "SlothBundle\Controller\контроллера по умолчанию", "файл": "/главная/пользователей /assoces/separatiiste/html/приложение /bootstrap.php.cache", "линия": файл "call_user_func_array", ": 3109, "арг": []}, { "функция" ":"/главная/пользователей /assoces/separatiiste/html/приложение /bootstrap.php.cache", "линия": 3109, "арг": []}, { "функция": "handleRaw", "тип": "->", "класс": "Symfony\Component\HttpKernel\HttpKernel", "файл": "/главная/пользователей /assoces/separatiiste/html/приложение /bootstrap.php.cache", "линия": 3071, "арг": []}, { "функция": "ручка", "типа": "->", "класс": "Symfony\Component\HttpKernel\HttpKernel", "файл": "/главная/пользователей /assoces/separatiiste/html/приложение /bootstrap.php.cache", "линия": 3222, "арг": []}, { "функция": "ручка", "типа": "->", "класс": "Symfony\Component\HttpKernel\внедрение зависимости \ContainerA wareHttpKernel", "файл": "/главная/пользователей /assoces/separatiiste/html/приложение /bootstrap.php.cache", "линия": 2444, "арг": []}, { "функция": "ручка" "Тип": "->", "класс": "Symfony\Component\HttpKernel\Kernel", "файл": "/главная/пользователей /assoces/separatiiste/HTML/веб /app_dev.php", "линия": 29, "арг": []}, { "функция": "{главная}", "файл": "/главная/пользователей /assoces/separatiiste/HTML/веб /app_dev.php", "линия": 0, "арг": []}]}
Я пробовал с композитором, но он возвращает ту же ошибку.
Как использовать композитор для загрузки файла?
Вам просто нужно убедиться, что эти файлы доступны и находятся в папке вашего проекта (если вы хотите, чтобы все было просто).
"autoload": {
"psr-0": { "": "src/", "SymfonyStandard": "app/" },
"files": [
"ariseid/client/OAuthAriseClient.php",
"config.inc.php"
]
}
Источник: https://getcomposer.org/doc/04-schema.md#files
При использовании ваших классов вы можете либо use OAuthAriseClient;
в верхней части вашего файла, а затем OAuthAriseClient::getInstance()
или вы можете просто добавить обратную косую черту к ее имени \OAuthAriseClient::getInstance()
при ее использовании.
Источник: http://php.net/manual/en/language.namespaces.importing.php
В любом случае, согласно ошибке, которую вы получаете, это то, что я думаю, что вам следует делать:
use SlothBundle\Controller\OAuthAriseClient;
// ...
$consumer = OAuthAriseClient::getInstance($consumer_key, $consumer_secret, $consumer_private_key);
Примечание. Если вы собираетесь аутентифицировать пользователя каждый раз в своих контроллерах, обратите внимание на добавление прослушивателя событий, который проверяет подлинность пользователя перед достижением контроллера.
Поскольку вы не импортируете класс из операторов use
,
ваш контроллер ищет класс, который является частью одного и того же пространства имен (SlothBundle\Controller
).
Вы должны использовать свой класс следующим образом:
$consumer = \OAuthAriseClient::getInstance($consumer_key, $consumer_secret,$consumer_private_key);