Ошибка загрузки PHP-файла в контроллер Symfony

1

Я пытаюсь загрузить файл 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, "арг": []}]}

Я пробовал с композитором, но он возвращает ту же ошибку.

  • 2
    require_once? в Symfony oO это абсурдно. Как бы то ни было, в вашем случае вы находитесь в пространстве имен, и если вы хотите вызвать OAuthAriseClient, вы должны поставить косую черту перед ним \ OAuthAriseClient ...
  • 0
    спасибо, это работает, ты можешь объяснить мне, почему? и если это абсурдно, я хотел бы знать, почему и как это исправить. Спасибо
Показать ещё 2 комментария
Теги:
login
require
require-once

2 ответа

1

Как использовать композитор для загрузки файла?

Вам просто нужно убедиться, что эти файлы доступны и находятся в папке вашего проекта (если вы хотите, чтобы все было просто).

"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);

Примечание. Если вы собираетесь аутентифицировать пользователя каждый раз в своих контроллерах, обратите внимание на добавление прослушивателя событий, который проверяет подлинность пользователя перед достижением контроллера.

0

Поскольку вы не импортируете класс из операторов use,
ваш контроллер ищет класс, который является частью одного и того же пространства имен (SlothBundle\Controller).

Вы должны использовать свой класс следующим образом:

$consumer = \OAuthAriseClient::getInstance($consumer_key, $consumer_secret,$consumer_private_key);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню