我在Joomla 1.5中为openId下载了一些示例代码。我正在学习这个Joomla的东西并重新学习一些PHP的东西。所以我对整个Content Manager世界基本上都是新手。我试图用openid做一个小插件进行身份验证,但这似乎是错误的。
我已经在eclipse中成功调试了项目,发现错误来自我的jimport。
class plgAuthenticationOpenId extends JPlugin{
/**
* OpenId Atributes.
*/
private static $attribute;
private static $proxyHost;
private static $proxyPort;
private static $proxyUser;
private static $proxyPassword;
private static $appId;
private static $appPassword;
function plgAuthenticationOpenId(& $subject, $config){
parent::__construct($subject, $config);
plgAuthenticationOpenId::$appId=$this->params->get('userKey', '');
plgAuthenticationOpenId::$appPassword = $this->params->get('apiKey', '');
define('Auth_OpenID_RAND_SOURCE', null);
jimport('openid.consumer');
jimport('openid.Auth.OpenID.AX');
//Basic Attributes
plgAuthenticationOpenId::$attribute = array();
//more code messing with plgAuthenticationOpenId [...]
我试图将库放在php include路径中,把它放在PEAR路径中,我已经尝试过required_once(它在那里而不是在jimport中制动),我试图jimport整个路径并试图直接使用包括。我还定义了目录分隔符和JPATH_BASE。似乎没什么用。
我认为这应该有一个非常简单的解决方案,因为我已经复制/粘贴了代码(不是我自己创建的)并且是一个简单的jimport。但是,我是新手,并坚持下去。所以请帮助。
非常感谢。
答案 0 :(得分:1)
问题是jimport('openid.consumer');
已更改include_path
这是一个演示它的测试。
<?php
// I executed code below in the view to obtain output
var_dump(ini_get('include_path'));
jimport('openid.consumer');
jimport('openid.Auth.OpenID.AX');
var_dump(ini_get('include_path'));
// OUTPUT
string '.:/opt/lampp/lib/php' (length=20)
string '/opt/lampp/htdocs/promark_eblaster/libraries/openid/.:/opt/lampp/lib/php' (length=72)
?>
正如您所看到的,include_path已更改。
您可以尝试以下解决方法。
<?php
// Remember the Original Path
$oldPath = ini_get('include_path');
// Include OpenID Stuff
jimport('openid.consumer');
jimport('openid.Auth.OpenID.AX');
// Set back the include_path so Joomla can import files with old include path
ini_set('include_path', $oldPath);
// Check if Success
JFactory::getApplication()->enqueueMessage("Hellow World");
// The rest of your code...
?>