【问题标题】:php chdir() real functionalityphp chdir() 真正的功能
【发布时间】:2013-08-17 07:31:04
【问题描述】:

我正在开发一个 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核心文件的路径,比如define.php和framework.php?到底是怎么回事??如果你们有任何其他解决方案或更改现有代码比我的更好,请与我分享,我将非常感激。

还有一件事如果我改变了会有什么影响

$mainframe =& JFactory::getApplication('site') to $mainframe =& JFactory::getApplication('administrator') 

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

【问题讨论】:

    标签: php joomla


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-22
        • 2020-03-11
        • 2019-02-02
        • 1970-01-01
        相关资源
        最近更新 更多