我创建了一个脚本,以便通过php脚本插入一些文章。此脚本正在我的本地计算机(xampp)上运行,但是当我将整个joomla项目部署到我的Web服务器时,我收到以下错误消息:
显示错误页面时出错:应用程序实例化错误:应用程序实例化错误
通过添加一些echo调用,我能够找到导致错误的行:
$app = JFactory::getApplication('site');
现在我想知道如何修复此行为并使我的功能也在Web服务器上运行。
下面我将提供我的系统信息和我的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;永远不会打印出来。
答案 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');