在Symfony控制器中加载PHP文件时出错

时间:2015-11-17 10:33:49

标签: php symfony login require require-once

我正在尝试在Symfony控制器中加载身份验证PHP文件。

我必须将它与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 - 致命错误:找不到Class'SlothBundle \ Controller \ OAuthAriseClient'   上下文:{“type”:1,“file”:“/ home / users / assoces / separatiiste / html / src / SlothBundle / Controller / DefaultController.php”,“line”:39,“level”: - 1,“堆 “:[{” 功能 “:” 则loginAction “ ”类型“: ” - >“ 中, ”类“: ”SlothBundle \控制器\ DefaultController“, ”文件“:”/家庭/用户/ assoces / separatiiste / HTML /app/bootstrap.php.cache","line":3109,"args":[]},{"function":"call_user_func_array","file":"/home/users/assoces/separatiiste/html/app /bootstrap.php.cache “ ”行“:3109, ”ARGS“:[]},{ ”功能“: ”handleRaw“, ”类型“: ” - >“ 中, ”类“:” 的Symfony \组件\ HttpKernel \ HttpKernel “ ”文件“: ”/家庭/用户/ assoces / separatiiste / HTML /应用/ bootstrap.php.cache“, ”线“:3071, ”ARGS“:[]},{ ”功能“:”处理 “ ”类型“: ” - >“ 中, ”类“: ”Symfony的\分量\ HttpKernel \ HttpKernel“, ”文件“:”/家庭/用户/ assoces / separatiiste / HTML /应用/ bootstrap.php.cache ”, “行”:3222, “ARGS”:[]},{ “功能”: “处理”, “类型”: “ - >” 中, “类”: “的Symfony \元器件\ HttpKernel \ DependencyInjection \ ContainerAwareHttpKernel” “文件”:“/家庭/用户/ assoces / separatiiste / HTML /应用/ bootstr ap.php.cache “ ”行“:2444, ”ARGS“:[]},{ ”功能“: ”处理“, ”类型“: ” - >“ 中, ”类“:” 的Symfony \元器件\ HttpKernel \内核 “ ”文件“: ”/家庭/用户/ assoces / separatiiste / HTML / WEB / app_dev.php“, ”线“:29, ”ARGS“:[]},{ ”功能“:”{}主”, “文件”: “/家庭/用户/ assoces / separatiiste / HTML /网络/ app_dev.php”, “行”:0 “参数” msgid:[]}]}

我尝试过使用composer,但它返回相同的错误。

2 个答案:

答案 0 :(得分:1)

使用composer加载文件怎么样?

您只需要确保这些文件可以在项目文件夹中访问(如果您想保持简单)。

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

注意:如果您要在控制器中每次都要对用户进行身份验证,请考虑添加一个事件侦听器,以便在到达控制器之前对用户进行身份验证。

答案 1 :(得分:0)

因为您没有从use语句中导入该类,所以 您的控制器正在查找属于同一名称空间(SlothBundle\Controller)的类。

您必须按如下方式使用您的课程:

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