Joomla.it Forum
Joomla! 3 => Installazione, migrazione e aggiornamento => : bel.gio 18 Apr 2024, 13:07:07
-
Buongiorno, pubblico alcuni articoli sul sito di una società sportiva dilettantistica di cui faccio parte (http://www.asdlavenomombello.it (http://www.asdlavenomombello.it)). L'hosting del sito è presso Siteground. Da qualche giorno non riesco più ad accedere nè al sito nè alla pagina di amministrazione ed ottengo il seguente messaggio di errore:"Fatal error: Cannot use Joomla\String\String as String because 'String' is a special class name in /home/customer/www/asdlavenomombello.it/public_html/libraries/vendor/joomla/registry/src/Format/Json.php on line 12". Il file Json è il seguente
<?php
/**
* Part of the Joomla Framework Registry Package
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
namespace Joomla\Registry\Format;
use Joomla\Registry\AbstractRegistryFormat;
use Joomla\String\String;
/**
* JSON format handler for Registry.
*
* @since 1.0
*/
class Json extends AbstractRegistryFormat
{
/**
* Converts an object into a JSON formatted string.
*
* @param object $object Data source object.
* @param array $options Options used by the formatter.
*
* @return string JSON formatted string.
*
* @since 1.0
*/
public function objectToString($object, $options = array())
{
return String::unicode_to_utf8(json_encode($object));
}
/**
* Parse a JSON formatted string and convert it into an object.
*
* If the string is not in JSON format, this method will attempt to parse it as INI format.
*
* @param string $data JSON formatted string to convert.
* @param array $options Options used by the formatter.
*
* @return object Data object.
*
* @since 1.0
*/
public function stringToObject($data, array $options = array('processSections' => false))
{
$data = trim($data);
if ((substr($data, 0, 1) != '{') && (substr($data, -1, 1) != '}'))
{
$ini = AbstractRegistryFormat::getInstance('Ini');
$obj = $ini->stringToObject($data, $options);
}
else
{
$obj = json_decode($data);
}
return $obj;
}
}
L'errore potrebbe/dovrebbe essere dovuto "all'incompatibilità" tra le versioni di Joomla 3.4.8 e di PHP 7.4.33. Dovrei aggiornare Joomla e i passaggi che dovrei fare, a quanto ho capito, è passare prima alla versione 3.6.5 e poi a una versione 3.10.x. Da una versione 3.10.x poi dovrei aggiornare a 4.x, infine dalla 4.x alla 5.x E' corretto? devo usare qualche versione di patch particolare della 3.10.x? E delle 4.x e 5.x versioni minor specifiche? Il grosso problema che ho è che non posso fare gli aggiornamenti da Joomla poiché come detto non riesco ad accedere nè al sito nè alla pagina di amministrazione e quindi a Joomla, è possibile fare almeno i primi aggiornamenti tramite FTP e/o phpMyAdmin? In alternativa dovrei chiedere a Siteground di abbassare la veriosne di PHP per permettermi di accedere e fare gli aggiornamenti (ma a quanto ho capito non sono molto propensi a farlo), in questo caso quale versione di PHP dovrei richiedere per avere la certezza che riesca poi ad accedere? Ringrazio chi mi sarà di supporto
-
Joomla 3 è pienamente compatibile con php 7.4
https://manual.joomla.org/docs/4.4/get-started/technical-requirements/#requirements-for-joomla-3x
-
Quel documento dice che l'ULTIMA versione di Joomla 3 è compatibile con il php 7.4, ma q3esto non è necessariamente vero per le tutte le versioni 3.x. Infatti alla nota 4 di quel documento c'è scritto:
versions 3.5 and later are compatible with PHP 7.
Visto che tu hai la 3.4.8, è decisamente un problema di conflitto con il php.
Purtroppo l'aggiornamento via FTP non è più supportato, non ricordo esattamente da quale versione, ma è comunque indicato come "ultima spiaggia" per i casi particolari, come il tuo. Ti consiglierei di fare un aggiornamento via FTP saltando il minor numero di versioni possibili, fino alla prima che supporta il php 7 (7.4), e poi aggiornare almeno fino alla 3.10 con il metodo classico.
In pratica, segui l'opzione "C" in fondo a questa pagina: https://docs.joomla.org/J3.x:Upgrading_from_Joomla_3.4.x_to_3.5/it (https://docs.joomla.org/J3.x:Upgrading_from_Joomla_3.4.x_to_3.5/it)
Certo, se tu potessi chiedere al tuo hosting di tornare a una versione precedente di php giusto il tempo di farti fare un aggiornamento automatico, sarebbe decisamente meglio.
Il passare alla 4.x o alla 5.x può essere un problema, a seconda delle estensioni e/o del template che hai, quindi lo rimanderei a dopo, prima fai funzionare il sito con la 3.10 che appunto deve funzionare con quell'hosting.
-
Grazie per i riscontri che mi avete dato. Chiederò di far retrocedere PHP per poter effettuare gli aggiornamenti in automatico. Ho un dubbio/domanda: se non dovessi trovarli come dovrei comportarmi per farli riconoscere ed eseguirli? (ricordo che quando presenti/segnalati ho sempre eseguito gli aggiornamenti di Joomla). Ove non fosse possibile avere una versione più datata di PHP seguirò la guida che mi ha indicato emaberg. Vi aggiorno appena posibile
-
Alla fine non sono riuscito ad eseguire io l'aggiornamento, sia per motivi di tempo che per paura di creare ulteriori problemi, ho aperto un ticket a pagamento per migrare alla veriosne 3.6.5. Dovrei riuscire ora ad eseguire l'aggiornamento alla versione 3.10.12 tramite pagina di amministrazione di Joomla.