Php jimport不在Joomla 1.5工作
我已经在Joomla 1.5中下载了一些openId的示例代码。我正在学习Joomla的东西,并重新学习一些PHP的东西。所以我对整个内容管理器的世界基本上是非常陌生的。我正在尝试使用openid制作一个用于身份验证的小插件,但它似乎是错的 我已经在eclipse中成功调试了该项目,并发现错误来自我的jimportPhp jimport不在Joomla 1.5工作,php,joomla,joomla1.5,Php,Joomla,Joomla1.5,我已经在Joomla 1.5中下载了一些openId的示例代码。我正在学习Joomla的东西,并重新学习一些PHP的东西。所以我对整个内容管理器的世界基本上是非常陌生的。我正在尝试使用openid制作一个用于身份验证的小插件,但它似乎是错的 我已经在eclipse中成功调试了该项目,并发现错误来自我的jimport class plgAuthenticationOpenId extends JPlugin{ /** * OpenId Atributes. */
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包含路径中,把它放在PEAR路径中,我试过一次所需的_(它在那里而不是在jimport中停止),我试着jimport整个路径,并试着直接使用include。我还定义了目录分隔符和JPATH_基。似乎什么都不管用
我认为这应该有一个非常简单的解决方案,因为我复制/粘贴了代码(不是自己创建的),并且是一个简单的jimport。但不管怎样,我对这件事还是很陌生。所以,请帮帮我
非常感谢。问题在于
jimport('openid.consumer')代码>已更改包含路径
这里有一个测试来证明这一点
<?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_路径已更改
您可以尝试以下解决方法
<?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...
?>
感谢您的回复。但我看不到如何修改代码使其工作。我已经输出了include_路径(它在我的xampp中的php/PEAR中),我在php.ini中将它更改为项目的Joomla库文件夹。我已将openid文件夹复制/粘贴到PEAR路径,它位于我的Joomla库文件夹中。两者都不起作用。谢谢你的帮助!:)由于jimport('openid.cunsumer')
第一次更改include路径后,这对Joomla不好。解决方案很简单,在jimport('openid.consumer')之后
和jimport('openid.Auth.openid.AX')代码>将包含路径更改为旧路径。基本上是重复使用我发布的代码。我必须道歉。我没有正确地解释我自己。我的问题是,当它执行指令jimport('openid.consumer')时,代码中断。它并没有改变我的include_路径,因为它只是在那个指令之后没有做任何事情。真的很奇怪。在jimport('openid.*****')
常规jimport('joomla.**')
崩溃后,我测试了这段代码,出现了许多无法打开流的错误。包括openid将改变您的路径,请查看库/openid/consumer.php
。试着用我在变通方法中建议的方式包装jimport('openid.**')
它对我很有用。。。如果出于某种原因,它不起作用,请尝试将jimport
移动到类之外(有和没有include\u路径变通方法),因此我已经调试了更多,我的错,应该先这样做,并找到一条很长的路。首先,我查找consuer.php,它将我引导到Consumer.php(在一个必需的_once指令中),然后我通过OpenId、PlainHTTPFetcher、HTTPFetcher,最后是BigMath.php,在这里我有一个小if(@dl($module.“.php_SHLIB_后缀))(第383行)。