我正在开发一个joomla模块,在这个模块中我访问外部文件(ajax调用)时遇到了路径问题“致命错误:在C:中找不到类'JFactory‘”,但经过几天的搜索,我终于找到了真正的解决方案。以下是代码
define( '_JEXEC', 1 );
chdir("../../");
getcwd();
define('JPATH_BASE', getcwd() );
define( 'DS', DIRECTORY_SEPARATOR );
require_once (JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
global $mainframe;
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();现在我试图理解代码中发生了什么,除了chdir("../../");是如何工作的这一点之外,所有的事情都很清楚。是否更改了包含该代码的文件的目录??(在我的例子中是getuser.php)还是它改变了joomla核心文件的路径,如defines.php和framework.php??到底是怎么回事?如果你们有任何其他的解决方案或者对现有代码的修改比我的更好,所以请与我分享,我将非常感谢。
还有一件事,如果我改变了,会有什么影响
$mainframe =& JFactory::getApplication('site') to $mainframe =& JFactory::getApplication('administrator') 因为我改变了它,但它对结果没有任何影响。
发布于 2013-08-15 14:02:53
不会直接更改您显式指定的。你有一个致命的错误,因为PHP不能找到你的JFactory类文件。修改路径,使其引用类文件。
发布于 2013-08-15 14:08:42
假设您使用的是Joomla 2.5+,您应该通过以下方式包含Joomla框架
define('_JEXEC', 1);
define('JPATH_BASE', realpath(dirname(__FILE__)));
require_once ( JPATH_BASE .'/includes/defines.php' );
require_once ( JPATH_BASE .'/includes/framework.php' );
require_once ( JPATH_BASE .'/libraries/joomla/factory.php' );https://stackoverflow.com/questions/18247109
复制相似问题