gpt4 book ai didi

joomla - 使用 com_joomlaupdate 通过 CLI 升级 Joomla

转载 作者:行者123 更新时间:2023-12-03 18:04:03 27 4
gpt4 key购买 nike

我正在尝试编写一个 Joomla CLI 脚本来自动将站点升级到当前版本。在 Joomla 中,这似乎是通过 *com_joomlaupdate* 完成的。这个想法是能够从管理前端升级服务器上的任何 Joomla 站点。

我编写了以下内容进行测试,试图通过直接访问其模型中的方法来模拟 com_joomlaupdate 中的 Controller 。我不熟悉 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 目录中。 createRestorationFile()似乎也可以工作,我在 com_joomlaupdate 目录中得到了一个 restore.php 文件。

问题似乎出在 finaliseUpgrade() .它调用 setupInstall()在安装程序中,它会尝试查找 list 文件。我所缺少的(除其他外)我想是该文件(或更新的全部内容)在某处解压缩的步骤。问题是我在 com_joomlaupdate 中找不到任何执行此操作的代码?

我试图手动解压缩/tmp 中的更新文件。当我这样做时, finaliseUpgrade()实际上返回true,但该站点仍保留其旧版本。

最佳答案

好吧,这当然行不通:

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 :(

关于joomla - 使用 com_joomlaupdate 通过 CLI 升级 Joomla,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18324764/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com