Joomla通过php脚本添加文章Application Instantiation Error

时间:2017-03-28 21:05:32

标签: php joomla content-management-system

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

  

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

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

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

现在我想知道如何修复此行为并使我的功能也在Web服务器上运行。

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

Systeminformations

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

PHP代码段

<?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;";

完整浏览器输出

  

STARTING;搜索应用程序;显示错误页面时出错:应用程序实例化错误:无法启动会话,因为标题已由&#34; /is/htdocs/wp1088688_4E1H7PYJFK/www/1500AutoNews/autoNews.php"发送;在第3行。

因此您可以看到错误是由JFactory调用引起的。找到应用程序&#39;永远不会打印出来。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

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

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

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