【问题标题】:Joomla add article via php script Application Instantiation ErrorJoomla通过php脚本添加文章应用程序实例化错误
【发布时间】:2017-08-22 03:21:16
【问题描述】:

我创建了一个脚本,以便通过 php 脚本插入一些文章。该脚本在我的本地机器(xampp)上运行,但是当我将整个 joomla 项目部署到我的 Web 服务器时,我收到以下错误消息:

显示错误页面时出错:应用程序实例化错误:应用程序实例化错误

通过添加一些 echo 调用,我能够找到导致错误的行:

$app = JFactory::getApplication('site');

现在我想知道如何解决此问题并让我的功能也可以在 Web 服务器上运行。

下面我将提供我的系统信息和我的 php 函数的开头直到导致错误消息的行:


系统信息

  • joomla 版本:3.6.5 稳定版
  • 数据库版本:5.6.34-79.1-log
  • php版本:5.6.30-he.0
  • 网络服务器:Apache

PHP sn-p

<?php

echo "STARTING;   ";

// get db connection
include('../includes/mysql.inc.php');

// get all sql querys
include('./autoNewsQuerys.inc.php');

/**
 * Prepare joomla framework to insert article correctly
 */
if (!defined('_JEXEC')) {
    define('_JEXEC', 1);
    define('JPATH_BASE','/is/htdocs/wp1088688_4E1H7PYJFK/www');
    require_once(JPATH_BASE . '/includes/defines.php');
    require_once(JPATH_BASE . '/includes/framework.php');
    defined('DS') or define('DS', DIRECTORY_SEPARATOR);
}

echo "searching app;";
$app = JFactory::getApplication('site');
echo "Found app;";

 

完整的浏览器输出

开始;搜索应用程序;显示错误页面时出错:应用程序实例化错误:无法启动会话,因为第 3 行的“/is/htdocs/wp1088688_4E1H7PYJFK/www/1500AutoNews/autoNews.php”已发送标头。

如您所见,错误是由 JFactory 调用引起的。 “找到的应用程序”永远不会打印出来。

【问题讨论】:

    标签: php joomla content-management-system


    【解决方案1】:

    只需将 Joomla index.php 文件复制到另一个文件,然后将 $app-&gt;execute 代码替换为您的代码。

    注意:您不需要包含任何 MySQL 库 - 因为您正在加载 Joomla 环境,所以您可以访问 JDatabase 类,它是一个数据库抽象层。

    另一个注意事项:此文件autoNewsQuerys.inc.php 可能包含一些问题(可能您正尝试在此处实例化应用程序,但尚未加载 Joomla 环境)。你应该把它移到最后。

    【讨论】:

    • 非常感谢!我刚刚复制了 index.php 文件,更改了 JPATH_BASE(感谢@AmitRay)变量,并用我的整个函数替换了执行调用。现在它的工作就像一个魅力。但问题是:为什么?
    • 我认为是因为您在代码中使用了一些核心 Joomla 功能,并且在加载 Joomla 环境之前加载了代码。
    【解决方案2】:

    如果它在 localhost 上运行而在 Web 服务器上不运行,那么最大的问题是定义基本路径。给出你的 joomla 安装的硬编码基本路径。我建议您使用 php 脚本检查您的基本路径。创建一个 php 文件并将其命名为 path.php。将它放在 Joomla 主文件夹中。文件内容

    <?php
    echo "The Base path is ".getcwd();
    ?>
    

    获得路径后,只需更改 Base_Path。例如:

    define('JPATH_BASE', '\var\www\joomla');
    

    【讨论】:

    • 我尝试了您的建议,但仍然无法正常工作。我更新了我的问题,因为 php 代码(硬编码的基本路径)和错误消息发生了一些变化。
    • @johni07 更改服务器时唯一可以更改的是路径,而不是 php 或 mysql 函数。如果服务器具有相同的配置但在 localhost 中运行良好,则意味着只有路径没有改变。你只是想一次为什么它不应该在新的网络服务器上工作。
    猜你喜欢
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 2023-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多