These instructions take advantage of the Composer powered update systems in 5.4 for maintenance updates, so make sure:

For Upgrading from versions prior to 5.3 look at the Installation and Upgrade Guides.

You will also find, at the end of this document, a list of new, optional packages that were made available during the maintenance phase of this version.

Before Updating

Follow all* instructions below that applies to the version you're updating from: when updating from 5.4.0 everything applies.

* The version you update to will always be the latests, hence the importance of following all steps.

From 5.4.6 and lower

Update ezpublish-legacy-installer to v2.0.3 for Composer 1.1

Newer versions of Composer sometimes updates it's API's and as such we need to make sure our composer plugin ezpublish-legacy-installer is up-to-date before we do anything else, so if you don't already have ezsystems/ezpublish-legacy-installer v2.0.3 and Composer 1.1, do the following: 

# First install Composer v1.0 that works with old version of ezpublish-legacy-installer
php -r "copy('https://getcomposer.org/download/1.0.3/composer.phar', 'composer.phar');"

# Then install newer version
php -d memory_limit=-1 composer.phar update --no-dev --prefer-dist --no-scripts ezsystems/ezpublish-legacy-installer

# Then make sure composer is updated to latests
php -d memory_limit=-1 composer.phar selfupdate 

From 5.4.1 and lower

Remove unneeded dependency causing conflicts

Perform the following command to make sure you you are not affected by conflicts caused by this package:

 

php -d memory_limit=-1 composer.phar remove --no-update --dev behat/mink-selenium-driver
This release fixes a vulnerability in the eZ Publish password recovery function. You need to have the PHP OpenSSL extension (ext-openssl) installed to take full advantage of the improved security, but even without it security is improved. See Security Advisory for further information.

From 5.4.2 and lower

Fix possible usage of the XmlText CustomTags pre-converters

The XmlText fix for EZP-23513 (see https://github.com/ezsystems/ezpublish-kernel/pull/1087) deprecates/removes the CustomTags pre-converter in favor of a new Expanding converter. While they're not part of the public API, if you rely on this file in any way, you might want to check and update your code.

Update the rewrite rules configuration

The legacy, v1 REST API, is now integrated to the Symfony Kernel. This allows interaction between this channel and new stack caches (persistence and HTTP). It mainly affects the Content Staging legacy extension. Remove the following line from your rewrite rules and restart your web server:

apache

RewriteRule ^/api/[^/]+/v1/ /index_rest.php [L]

nginx

rewrite "^/api/[^/]+/v1" "/index_rest.php" last;

From 5.4.4 or lower

Enable the LegacySearchEngineBundle in the kernel

Edit ezpublish/EzPublishKernel.php, and instantiate eZ\Bundle\EzPublishLegacySearchEngineBundle\EzPublishLegacySearchEngineBundle in the list of enabled bundles in the $bundles array in the registerBundles() method, right before EzPublishLegacyBundle.

From 5.4.9 or lower

Fix extended UTF characters

For issue EZP-26748, see the following diff for patch.

From 5.4.11 or lower

Check symfony requirement

Make sure you are using Symfony 2.8, as Symfony 2.7 support is being phased out. Reasoning: 2.7's main support period is coming to an end, 2.8 provides a better version to get ready for Symfony 3.x upgrade because of deprecation warnings, and on some system configurations* Symfony 2.7 is considered less secure.

To make sure you use the recommended versions of Symfony and some related libraries run the following composer command:

php -d memory_limit=-1 composer.phar require --no-update symfony/symfony:^2.8.41 sensio/distribution-bundle:~3.0 symfony/assetic-bundle:~2.8

\Random strings generated by paragonie/random_compat v1 as used by 2.7 are considered to not be cryptographically secure on Windows in general, and on older PHP versions (see CVE-2015-8867).

Updating packages with composer

 

To test a RC release you'll need to update your requirements before next step:

php -d memory_limit=-1 composer.phar require --no-update "ezsystems/ezpublish-kernel v5.4.7-rc1 as 5.4.7" "ezsystems/ezpublish-legacy v5.4.7-rc2 as 5.4.7" "ezsystems/comments-bundle v5.4.7-rc1 as 5.4.7" "ezsystems/ezflow-ls-extension v5.3.9-rc1 as 5.3.9"
 

With this command you'll update all packages that have received updates:

# First delete the Symfony container cache to avoid error, on Windows use something like: DEL /F /Q /S ezpublish/cache/*/*ProjectContainer.php
rm ezpublish/cache/*/*ProjectContainer.php
 
php -d memory_limit=-1 composer.phar update --no-dev --prefer-dist

Legacy extensions autoload must be regenerated when new classes are added. To make sure to avoid any issues always run this command after composer update:

php ezpublish/console ezpublish:legacy:script bin/php/ezpgenerateautoloads.php --extension

After Updating

Follow all instructions below that applies to the version you've updated from, i.e. if you are updating from 5.4.0 everything applies.

Updating from 5.4.1 and lower

Update Solr configuration and reindex content

An eZ Find user needs to update their solr schema.xml file.

For each solr core (located in ezfind/java/solr), you need to edit <my-core-name>/conf/schema.xml

Around line 566, right after:

<field name="meta_priority_si" type="sint" indexed="true" stored="true" multiValued="true"/>

Add the following lines:

<!-- denormalised fields for hidden and visible path elements -->
<field name="meta_visible_path_si" type="sint" indexed="true" stored="true" multiValued="true"/>     <!-- Visible Location path IDs -->
<field name="meta_visible_path_string_ms" type="mstring" indexed="true" stored="true" multiValued="true"/> <!-- Visible Location path string -->
<field name="meta_hidden_path_si" type="sint" indexed="true" stored="true" multiValued="true"/>     <!-- Hidden Location path IDs -->
<field name="meta_hidden_path_string_ms" type="mstring" indexed="true" stored="true" multiValued="true"/> <!-- Hidden Location path string -->

Now restart Solr, and re-index your content to be able to take advantage of this improvement.

New packages

New features are sometimes backported from the development version as external packages. They can be installed on top of your existing installation.

Solr search engine (5.4.5)

You may also install the ezsystems/ezplatform-solr-search-engine package, compatible with eZ Publish Platform kernel 5.4.5 and higher. You can read more about that on the 5.4.5 release notes.

Follow install instructions on the dedicated Solr Search Engine Bundle page.