繁体   English   中英

Joomla通过PHP脚本添加文章应用程序实例化错误

[英]Joomla add article via php script Application Instantiation Error

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

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

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

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

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

在下面,我将提供系统信息以及php函数的开始,直到出现该行为止,这会导致错误消息:


系统信息

  • joomla版本:3.6.5稳定
  • 数据库版本: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;";

完整的浏览器输出

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

因此,您可以看到错误是由JFactory调用引起的。 永远不会打印出“找到的应用”。

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

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

另一个注意事项:该文件autoNewsQuerys.inc.php可能包含一些问题(也许您正在尝试在此处实例化应用程序,但Joomla环境尚未加载)。 您应该将其移至末尾。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM