我正在尝试在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,但它返回相同的错误。
答案 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);