5

サイトを現在のバージョンに自動的にアップグレードする Joomla CLI スクリプトを作成しようとしています。Joomla では、これは *com_joomlaupdate* を通じて行われるようです。アイデアは、サーバー上の任意の Joomla サイトを管理フロントエンドからアップグレードできるようにすることです。

モデルのメソッドに直接アクセスして、com_joomlaupdate のコントローラーを模倣しようとして、テスト用に次のように記述しました。私は joomla フレームワークに慣れていないので、ここでばかげたことをしているかもしれません。

<?php

const _JEXEC = 1;

error_reporting(E_ALL | E_NOTICE);
ini_set('display_errors', 1);

define('JPATH_BASE', dirname(__DIR__));

require_once JPATH_BASE . '/includes/defines.php';
require_once JPATH_BASE . '/includes/framework.php';

require_once JPATH_LIBRARIES . '/import.legacy.php';
require_once JPATH_LIBRARIES . '/cms.php';

// Load the configuration
require_once JPATH_CONFIGURATION . '/configuration.php';

define('JPATH_COMPONENT_ADMINISTRATOR', JPATH_ADMINISTRATOR . '/components/com_joomlaupdate');

require_once JPATH_COMPONENT_ADMINISTRATOR . '/models/default.php';

class Upgradejoomla extends JApplicationCli
{

        public function doExecute()
        {
                $app = JFactory::getApplication('administrator');
                $app->initialise();
                $app->input->set('method', 'direct');

                $this->out('Fetching updates...');

                $updater = JModelLegacy::getInstance('JoomlaupdateModelDefault');

                $updater->refreshUpdates();

                $updater->applyUpdateSite();

                $basename = $updater->download();

                $app->setUserState('com_joomlaupdate.file', $basename);

                $updater->createRestorationFile($basename);

                echo ($updater->finaliseUpgrade());

                $updater->cleanUp();
        }
}

JApplicationCli::getInstance('Upgradejoomla')->execute();

download()正常に動作し、最新のファイルを取得して、tmpディレクトリに配置します。com_joomlaupdateディレクトリ内にrestore.phpファイルをcreateRestorationFile()取得します。

問題は にあるようfinaliseUpgrade()です。setupInstall()マニフェスト ファイルを検索しようとするインストーラーを呼び出します。私が(とりわけ)見逃しているのは、そのファイル(またはアップデートの内容全体)がどこかに解凍されるステップだと思います。問題は、com_joomlaupdate でそれを行うコードが見つからないことですか?

/tmp内の更新ファイルを手動で解凍しようとしました。これを行うと、finaliseUpgrade()実際には true が返されますが、サイトはまだ古いバージョンのままです。

4

3 に答える 3

0

まあ、これは確かにうまくいきません:

wget -O j3.zip \
    https://github.com/joomla/joomla-cms/releases/download/3.3.6/Joomla_3.3.6-Stable-Full_Package.zip
unzip -o j3.zip

これは、以前のバージョンの joomla ではかなりうまくいきました:(

于 2015-01-14T14:20:14.197 に答える