php chdir()真正的功能

时间:2013-08-15 05:57:14

标签: php joomla

我正在研究一个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') 

因为我改变它但它对结果没有影响。

2 个答案:

答案 0 :(得分:0)

chdir 会直接更改您明确指定的内容。您有一个致命错误,因为PHP无法找到您的JFactory类文件。修改路径,使其引用类文件。

答案 1 :(得分:0)

假设您正在使用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' );