簡體   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