"500 Whoops, looks like something went wrong.".
Something is broken. Please let us know what you were doing when this error occurred. We will fix it as soon as possible. Sorry for any inconvenience caused.
Tried following the recommended steps to add the missing tables etc. Still didn't work.
Here is the stack trace report which hopefully means something to someone?:
Error PrepareStatementFailureException
HTTP 500 Whoops, looks like something went wrong.
Unknown column 'm.publish_up' in 'where clause'
Exceptions 2Stack Traces 2
Joomla\Database\Exception\
PrepareStatementFailureException
in /home/testsite/public_html/libraries/vendor/joomla/database/src/Mysqli/MysqliStatement.php (line 141)
$this->statement = $connection->prepare($query); if (!$this->statement) { throw new PrepareStatementFailureException($this->connection->error, $this->connection->errno); } } /** * Replace named parameters with numbered parameters
in /home/testsite/public_html/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php -> __construct (line 1048)
* @since 2.0.0 * @throws PrepareStatementFailureException */ protected function prepareStatement(string $query): StatementInterface { return new MysqliStatement($this->connection, $query); } /** * Unlocks tables in the database. *
in /home/testsite/public_html/libraries/vendor/joomla/database/src/DatabaseDriver.php -> prepareStatement (line 1892)
$query->setLimit($limit, $offset); $sql = $this->replacePrefix((string) $query); $this->statement = $this->prepareStatement($sql); $this->sql = $query; $this->limit = (int) max(0, $limit); $this->offset = (int) max(0, $offset);
DatabaseDriver->setQuery(object(MysqliQuery))
in /home/testsite/public_html/libraries/src/Menu/SiteMenu.php (line 155)
) ->bind(':currentDate2', $currentDate) ->order($this->db->quoteName('m.lft')); $items = []; $iterator = $this->db->setQuery($query)->getIterator(); foreach ($iterator as $item) { $items[$item->id] = new MenuItem((array) $item); }
SiteMenu->Joomla\CMS\Menu\{closure}()
in /home/testsite/public_html/libraries/src/Cache/Controller/CallbackController.php (line 124)
$coptions['nomodules'] = $woptions['nomodules'] ?? 1; ob_start(); ob_implicit_flush(false); $result = \call_user_func_array($callback, $referenceArgs); $output = ob_get_clean(); $data = array('result' => $result); if ($wrkarounds)
CallbackController->get(object(Closure), array(), 'd17e8e13b99b4d9bf23a7d0b83a466c3', false)
in /home/testsite/public_html/libraries/src/Menu/SiteMenu.php (line 171)
{ /** @var CallbackController $cache */ $cache = Factory::getContainer()->get(CacheControllerFactoryInterface::class) ->createCacheController('callback', ['defaultgroup' => 'com_menus']); $this->items = $cache->get($loader, array(), md5(\get_class($this)), false); } catch (CacheExceptionInterface $e) { try {
SiteMenu->load()
in /home/testsite/public_html/libraries/src/Menu/AbstractMenu.php (line 306)
*/ public function getMenu() { if (!$this->itemsLoaded) { $this->load(); foreach ($this->items as $item) { if ($item->home) {
AbstractMenu->getMenu()
in /home/testsite/public_html/libraries/src/Menu/AbstractMenu.php (line 125)
*/ public function getItem($id) { $result = null; if (isset($this->getMenu()[$id])) { $result = &$this->getMenu()[$id]; } return $result;
AbstractMenu->getItem(null)
in /home/testsite/public_html/libraries/src/Application/SiteApplication.php (line 431)
$menu = $this->getMenu(); $item = $menu->getActive(); if (!$item) { $item = $menu->getItem($this->input->getInt('Itemid', null)); } $id = 0; if (\is_object($item))
SiteApplication->getTemplate(true)
in /home/testsite/public_html/libraries/src/Error/Renderer/HtmlRenderer.php (line 47)
public function render(\Throwable $error): string { $app = Factory::getApplication(); // Get the current template from the application $template = $app->getTemplate(true); // Push the error object into the document $this->getDocument()->setError($error); // Add registry file for the template asset
HtmlRenderer->render(object(Error))
in /home/testsite/public_html/libraries/src/Exception/ExceptionHandler.php (line 128)
// Reset the document object in the factory, this gives us a clean slate and lets everything render properly Factory::$document = $renderer->getDocument(); Factory::getApplication()->loadDocument(Factory::$document); $data = $renderer->render($error); // If nothing was rendered, just use the message from the Exception if (empty($data)) { $data = $error->getMessage();
ExceptionHandler::render(object(Error))
in /home/testsite/public_html/libraries/src/Exception/ExceptionHandler.php (line 71)
* @since 3.10.0 */ public static function handleException(\Throwable $error) { static::logException($error); static::render($error); } /** * Render the error page based on an exception. *
ExceptionHandler::handleException(object(Error))
in /home/testsite/public_html/libraries/src/Application/CMSApplication.php (line 299)
); // Trigger the onError event. $this->triggerEvent('onError', $event); ExceptionHandler::handleException($event->getError()); } // Send the application response. $this->respond();
CMSApplication->execute()
in /home/testsite/public_html/includes/app.php (line 63)
// Set the application as global app\Joomla\CMS\Factory::$application = $app;// Execute the application.$app->execute();
require_once('/home/testsite/public_html/includes/app.php')
in /home/testsite/public_html/index.php (line 32)
* define() is used rather than "const" to not error for PHP 5.2 and lower */define('_JEXEC', 1);// Run the application - All executable code should be triggered through this filerequire_once dirname(__FILE__) . '/includes/app.php';
Error
Call to undefined method Joomla\CMS\Filesystem\File::read()
in /home/testsite/public_html/administrator/components/com_easyarticles/includes/easyarticles.php (line 79)
if (is_null($config)) { // Load up default configuration file $file = EA_ADMIN_ROOT . '/defaults/configuration.json'; $defaults = JFile::read($file); $registry = new JRegistry($defaults); if (!defined('EA_COMPONENT_CLI')) {
EA::config()
in /home/testsite/public_html/administrator/components/com_easyarticles/includes/utils.php (line 52)
public $errors = null; public function __construct() { // EasyArticles's configuration $this->config = EA::config(); if (!defined('EA_COMPONENT_CLI')) { $this->doc = JFactory::getDocument(); $this->jconfig = EA::jconfig(); $this->app = JFactory::getApplication();
EasyArticles->__construct()
in /home/testsite/public_html/administrator/components/com_easyarticles/includes/acl/acl.php (line 23)
public $userId = null; private $adapter = array(); public function __construct($id = null) { parent::__construct(); if (!$id) { $id = JFactory::getUser()->id; }
EAAcl->__construct(1031)
in /home/testsite/public_html/administrator/components/com_easyarticles/includes/easyarticles.php (line 59)
if (!isset($rules[$my->id])) { include_once(__DIR__ . '/acl/acl.php'); $rules[$my->id] = new EAAcl($my->id); } return $rules[$my->id]; }
EA::acl()
in /home/testsite/public_html/plugins/system/easyarticles/easyarticles.php (line 40)
parent::__construct($subject, $config); $this->app = JFactory::getApplication(); $this->input = $this->app->input; $this->my = JFactory::getUser(); $this->acl = EA::ACL(); $this->config = EA::config(); } /** * Process redirection to correctly edit the articles
PlgSystemEasyArticles->__construct(object(Dispatcher), array('type' => 'system', 'name' => 'easyarticles', 'params' => '{}', 'id' => 11958))
in /home/testsite/public_html/libraries/src/Extension/ExtensionManagerTrait.php (line 241)
{ return new DummyPlugin($dispatcher); } // Instantiate the plugin return new $className($dispatcher, (array) PluginHelper::getPlugin($type, $plugin)); } /** * Get the DI container. *
CMSApplication->loadPluginFromFilesystem('easyarticles', 'system')
in /home/testsite/public_html/libraries/src/Extension/ExtensionManagerTrait.php (line 159)
case ModuleInterface::class: $container->set($type, new Module(new ModuleDispatcherFactory(''))); break; case PluginInterface::class: list($pluginName, $pluginType) = explode(':', $extensionName); $container->set($type, $this->loadPluginFromFilesystem($pluginName, $pluginType)); } } $container->get(DispatcherInterface::class)->dispatch( 'onAfterExtensionBoot',
CMSApplication->loadExtension('Joomla\\CMS\\Extension\\PluginInterface', 'easyarticles:system', '/home/testsite/public_html/plugins/system/easyarticles')
in /home/testsite/public_html/libraries/src/Extension/ExtensionManagerTrait.php (line 93)
$plugin = strtolower(str_replace('plg_', '', $plugin)); // Path to to look for services $path = JPATH_SITE . '/plugins/' . $type . '/' . $plugin; return $this->loadExtension(PluginInterface::class, $plugin . ':' . $type, $path); } /** * Loads the extension. *
CMSApplication->bootPlugin('easyarticles', 'system')
in /home/testsite/public_html/libraries/src/Plugin/PluginHelper.php (line 235)
return; } $plugins[$hash] = true; $plugin = Factory::getApplication()->bootPlugin($plugin->name, $plugin->type); if ($dispatcher && $plugin instanceof DispatcherAwareInterface) { $plugin->setDispatcher($dispatcher); }
PluginHelper::import(object(stdClass), true, object(Dispatcher))
in /home/testsite/public_html/libraries/src/Plugin/PluginHelper.php (line 193)
// Get the specified plugin(s). for ($i = 0, $t = \count($plugins); $i < $t; $i++) { if ($plugins[$i]->type === $type && ($plugin === null || $plugins[$i]->name === $plugin)) { static::import($plugins[$i], $autocreate, $dispatcher); $results = true; } } // Bail out early if we're not using default args
PluginHelper::importPlugin('system')
in /home/testsite/public_html/libraries/src/Application/CMSApplication.php (line 714)
// Load the behaviour plugins PluginHelper::importPlugin('behaviour'); // Trigger the onAfterInitialise event. PluginHelper::importPlugin('system'); $this->triggerEvent('onAfterInitialise'); } /** * Checks if HTTPS is forced in the client configuration.
CMSApplication->initialiseApp(array('language' => 'en-GB'))
in /home/testsite/public_html/libraries/src/Application/SiteApplication.php (line 709)
$options['language'] = 'en-GB'; } } // Finish initialisation parent::initialiseApp($options); } /** * Load the library language files for the application *
SiteApplication->initialiseApp()
in /home/testsite/public_html/libraries/src/Application/SiteApplication.php (line 224)
* @since 3.2 */ protected function doExecute() { // Initialise the application $this->initialiseApp(); // Mark afterInitialise in the profiler. JDEBUG ? $this->profiler->mark('afterInitialise') : null; // Route the application
SiteApplication->doExecute()
in /home/testsite/public_html/libraries/src/Application/CMSApplication.php (line 266)
$this->sanityCheckSystemVariables(); $this->setupLogging(); $this->createExtensionNamespaceMap(); // Perform application routines. $this->doExecute(); // If we have an application document object, render it. if ($this->document instanceof \JDocument) { // Render the application output.
CMSApplication->execute()
in /home/testsite/public_html/includes/app.php (line 63)
// Set the application as global app\Joomla\CMS\Factory::$application = $app;// Execute the application.$app->execute();
require_once('/home/testsite/public_html/includes/app.php')
in /home/testsite/public_html/index.php (line 32)
* define() is used rather than "const" to not error for PHP 5.2 and lower */define('_JEXEC', 1);// Run the application - All executable code should be triggered through this filerequire_once dirname(__FILE__) . '/includes/app.php';
Labels |
Added:
?
|
Thanks Fedik,
I am just loading another test site (didn't realise I was using an older version I got it from the Joomla news page. Will feedback how I get on
If I was to guess I would say the problem is a system plugin called easyarticles.
@brianteeman I did not checked the trace at first, you are right, it seems comes from com_easyarticles
@PercyP please also check that the component you using is compatible with Joomla 4,
it does not looks like Joomla 4 error
I'm just curius @PercyP what does the pre upgrade checker look for you? When com_easyarticles is not compatible with Joomla 4 it should have shown you that? Specificly that easyarticles system plugin should have been shown to you before you did the upgrade right?
If it is a system plugin and we don't have a bug with that, there should have been even shown a special div with a warning message that there are plugins which can break the site if not compatible.
Yes thats why i'm asking. Its a payed extension so i can not test it myself.
Labels |
Added:
Information Required
|
Status | New | ⇒ | Closed |
Closed_Date | 0000-00-00 00:00:00 | ⇒ | 2021-12-01 16:50:36 |
Closed_By | ⇒ | Quy | |
Labels |
Added:
No Code Attached Yet
Removed: ? |
Closing due to no response with additional information.
I find this frustrating. I have the same problem, and I have seen references to it in other places across the internet and when someone investigates, nothing is found and the issue is marked as "closed".
I can not figure out where to start with this: I have no errors in the error log, I have followed the instructions as best as I can, yet I am left with an unusable website.
I have several Joomla sites; some of them update with no issue and others don't. I can not figure out why that can happen.
A new installation of Jooomla v4 is always fine.
If you have admin access then go to the global configuration and set error reporting to maximum and turn debug on.
If you dont have admin access then you will need to use ftp or your hosting provided file manager and edit the configuration.php and set
public $debug = false;
public $error_reporting = 'maximum';
This should reveal enough information to proceed
Those settings were already set (NB: public $debug = 1;
).
I reverted to backup and started again, recording my efforts and the feedback I got.
The website is currently v3.10.4. Before updating
content
still contains the content, but all requests result in 404. There is no admin interface at all (e.g. database repair buttons).I have put in some effort here, but I simply do not know what to do next.
Where do I start to find the problem?
My guess is the database structure has not been updated correctly, but I do not know how to go about fixing that
This problem is not unique to me; others have reported the same thing.
would it be possible to share the backup
Though, yes I am happy to share it.
How do I do that? (Securely)
It's an Installatron backup, so I assume it contains all passwords/ etc
or alternatively give me access to the site in its 3.x state
never used installatron so cant comment on that.
you could share the backup with me on dropbox?
I have just restored the backup (the site is again 3.10.4)
now... how do I go about sharing it? Happy to share the backup or allow you access (whichever you think would be best)
got it. will check this afternoon
just to confirm that I have taken a backup of your site.
and I can also confirm that the update is failing.
Currently investigating with the backup
Let me know if it's a database thing and I can help.
so far it looks like a combination of issues
so it looked like an sql problem
Everything is as reported #34748 (comment)
When I check the joomla_update.php logs we can see that all the sql updates do not run
One thing I noticed while navigating was this error
0 Call to undefined method InstallerHelper::getExtensionGroupes()
This is strange as this is a J3 method and is not present in J4 (and I have seen it reported before on the forum)
Digging into that error I can see that none of the files or folders that should be removed by the function deleteUnexistingFiles have been removed. they are all still present.
I suspect that this is the root cause
@brianteeman It looks as if the backup from before the update contains already stuff from a previous attempt to update to J4.
Can you check if that backup already contains tables with names like "#__workflow"?
Is it really InstallerHelper::getExtensionGroupes()?
The InstallerHelper in J4 has the method getExtensionGroups()
checking
P.S.: If that is the case, database stuff and files from a previous attempt to update to J4 are there, then a backup has been restored in past after that attempt which did not remove these files and database stuff.
The details in section "I cannot restore a Joomla 3 backup on top of Joomla 4; the site is broken." of the following page may help to solve that: https://www.akeeba.com/news/1748-joomla-3-10-and-4-0-common-issues.html?fbclid=IwAR22RBK3YcTaRme3x_VNkdlBcYTOp4I0RoIn_Fqo70OQftTa6-JwEt5XiAM
For the database stuff also the SQL in the description of this issue might help: #35664 to understand, but the previously mentioned section already tells what to do to clean up the backup of the 3.10 to have again a clean starting point for the next attempt to updater to J4.
the backup is pure j3 - no j4 files present
no you misunderstood me
I have a backup of his site with joomla 3.10
The update fails because the j3 files are not being removed in the update process resulting in a site with j3 & j4 files
Well if there is an SQL error during the update, the script.php stuff for removing the files does not run, as far as I know.
Might have found it - please hold
Short version
Slightly longer version
Longer version
I reverted to backup and started again, recording my efforts and the feedback I got.
This was your problem. You reverted the files but not the database. And everything went fubar after that.
If you run the sql in #35664 on your j3 backup then you will be back to a real j3 site and the update will work
@richard67 99% i found the sql where it breaks and I have to swallow my tongue, put away my ego and suggest a change to one of those immutable sql files in order to fix at least that part of the problems. in 4.0.0.-2018-5-15.sql the workflows tables are created and the records inserted.
The problem is that the new records are inserted with an id and thats where we get the duplicates and the errors
changing
INSERT INTO `#__workflows` (`id`, `asset_id`,
to
``INSERT INTO #__workflows
(`asset_id`,`
etc
would I think resolve that. Note if thats correct then other sql updates might need to be amended as well.
@brianteeman That's one way to solve it, which in such a case would result in duplicate records when a previous attempt of an update to J4 had not been cleaned up, i.e. we would have these records twice. Not sure which one would be used in that case, the one with the lower or the one with the higher ID number.
Another way to solve it would be to just prepend these statements by a delete statement.
But we can not solve all these problems in that way.
There are things which we cannot solve because of the database checker and which will happen when we have fixed all the others: The "Error SQL Table '#__history' already exists" and the "Error SQL Duplicate column name 'extension'" in which you will run after the other things are fixed. See my comments in issue #35664 for details.
P.S.: And that's why I did not touch the old SQL. We could solve the duplicate primary key issues in the ways described above or by extending the query in a way so the records are only inserted when not present already.
If we use the ways to insert without ID like you suggest, we would have to change hard-coded cross references to these IDs to the use of subqueries in these SQL scripts.
But anyway, solving all this will not help with such a broken update, there will remain problems which we cannot fix because of the limitations of the database checker.
yes fundamentally the problem is that when an error occurs the update process MUST not say the site has been successfully updated
yes fundamentally the problem is that when an error occurs the update process MUST not say the site has been successfully updated
About this we can agree.
Too scared to even look at that code.
But it could depend a bit on database drivers (or clients) ... I think I have observed in past that PDO seems to be better with error messages and error handling than the mysqli driver.
I reverted to backup and started again, recording my efforts and the feedback I got.
This was your problem. You reverted the files but not the database. And everything went fubar after that.
If you run the sql in #35664 on your j3 backup then you will be back to a real j3 site and the update will work
Wow! Thanks so much for helping me out. I really had no idea where to start solving this. This worked for me.
My "restore" does not delete files and tables that are not in the back-up. Any DB tables or files created after the backup was created remain untouched.
I now realise a SQL error means the installation has stalled and you have to start again.
For the next website I update, I will ensure I have a clean install of J3 to use as back-up. If I need to restore, I will drop all tables from the database beforehand to remove old entries. It may been quicker to do that this time, but I wanted to try the database clean-up method you suggested (it helps me understand).
Hello, can anyone help me with this situation? I've never seen this joomla 4 so complicated to update. Going into this issue similar to what I'm facing. can someone help? Go for an analysis.
You have a k2 plugin which is not compatible with Joomla 4. Rename the folder where this plugin is located so it cannot be loaded anymore.
Thank you very much for your help Richard, I did as instructed and renamed the k2 plugin folder, but unfortunately it still has other errors, like:
Table 'redebrazilriders_joomla4.vf1n4_mail_templates' doesn't exist
/home/redebrazilriders/public_html/backup_rbr/libraries/vendor/joomla/database/src/Mysqli/MysqliStatement.php:141
If you can take a look here is the link:
https://redebrazilriders.com.br/backup_rbr/administrator/
Attached error image:
@pescweb Table 'redebrazilriders_joomla4.vf1n4_mail_templates' doesn't exist
... that means the database updates have not taken place. You should restore a backup from before the update, using an empty folder and an empty database so there are no remainders left from the broken update. Then you should update or uninstall the incompatible plugin and other stuff and do again the update. If you still have problems you should ask for support in the forum https://forum.joomla.org/ or in social media (e.g. Facebook groups) but not post in a closed issue here, and also not open a new issue here because here is the place to handle bugs and features but not support requests.
Please try to test a newest version
https://www.joomla.org/announcements/release-news/5839-joomla-4-rc-3-and-joomla-3-10-alpha-8-are-here.html