This section describes how to upgrade your existing eZ Publish 5.2 installation to version 5.3. Make sure that you have a working backup of the site before you do the actual upgrade, and make sure that the installation you are performing the upgrade on is offline.
Note on Paths
- /<ezp5-root>/: The root directory where eZ Publish 5 is installed in, examples: "/home/myuser/www/" or "/var/sites/ezpublish/"
- /<ezp5-root>/ezpublish_legacy/: Root directory of "Legacy" (aka "Legacy Stack", refers to the eZ Publish 4.x installation which is bundled with eZ Publish 5) normally inside "ezpublish_legacy/", example: "/home/myuser/www/ezpublish_legacy/"
Check for requirements
PHP 5.3.3 and higher is needed. Further information regarding system requirements can be found on Requirements Documentation Page.
Step 1: Upgrade the legacy distribution files
The easiest way to upgrade the distribution files is to unpack eZ Publish 5.3 to a separate directory and then copy the directories that contain site-specific files from the existing 5.2 installation into "/<ezp5-root>/". Make sure you copy the following directories:
ezpublish_legacy/design/<your designs>(do NOT include built-in designs: admin, base, standard or admin2)
ezpublish_legacy/extension/*(not including the built-in / standalone ones: ezflow, ezjscore, ezoe, ezodf, ezie, ezmultiupload, ezmbpaex, ez_network, ezprestapiprovider, ezscriptmonitor, ezsi, ezfind)
config.cluster.php, if applicable
NB: Since writable directories and files have been replaced / copied, their permissions might have changed. You may have to reconfigure webserver user permissions on specific folders as explained in the file permissions chapter of the installation process.
Step 2: upgrade custom legacy extensions
If you are using custom extensions, the sub-directories inside the "extension" directory will also have to be copied from the existing 5.2 installation into "/<ezp5-root>/ezpublish_legacy/extension/". However, make sure that you do not overwrite any extensions that are included in eZ Publish distribution, which currently are (Note: As of eZ Publish 5.2, these extensions have the same version number as eZ Publish):
Note that upgrading the distribution files will overwrite the autoload arrays for extensions. You will need to re-generate the autoload arrays for active extensions later.
Important: If you plan to upgrade your eZ Website Interface, eZ Flow or eZ Demo site package as well, then additional extensions will be updated and the step for re-generate the autoload arrays can be skipped until that is done (links to documentation for upgrading these site packages can be found in the last step of this page).
Step 3: upgrade the database
This step assumes use of the built in database drivers, mysql (incl mariadb) and PostgreSQL, for other databases supported via extension please use scripts and documentation provided by extension.
Import to your database the changes provided in
ezpublish.system.<siteAccessName>.database has been removed for defining database settings. You now need to:
Define a Doctrine connection
Pro TipSet your base DB params in your
parameters.yml.distand refer them here.
Define one or several repositories
(Optional) Make your SiteAccess config point to the right repository
Remove the old connection information
Note : to benefit from the new configuration, don't forget to remove the old configuration
Step 4: Apply 5.3 configuration changes
Since default configuration files have been overwritten during step one, the few additions to those files that were made in 5.2 need to be applied manually to the configuration files.
All of those changes are additions, none of them replaces what you already have.
For most of them, at least one, if not all hierarchy elements (monolog, handler, framework, router...) will already be there. All you have to do is add the missing bits in the existing configuration blocks.
In ezpublish/config/config.yml, you need to add a few default values for the framework
ezpublish.system.<siteAccessName>.session_name has been deprecated for defining session name. You now need to use
In routing.yml, add new login routes and the
_ezpublishRestOptionsRoutes route loader:
In ezpublish/config/security.yml, under
ezpublish_front firewall, update to fit the following (be sure to remove
If you have added anything to
parameters.yml, we suggest that you add your custom settings to
parameters.yml.dist, so that the composer post-update script handles those, and generates their values correctly.
In your templates, change your links pointing to
/user/logout to appropriate
It is not possible to just copy your old
EzPublishKernel.php file over from the previous installation, since quite a few changes were made to this file in this release. We suggest that you simply reflect in the new kernel file any changes you made in the previous version.
If you had modified
composer.json to add your own requirements, you must re-apply those changes to the new version, and run
Varnish (if applicable)
Anonymous state of a user is not checked through presence of
is_logged_in cookie any more. Therefore, when using Varnish, you must change the following in your VCL file:
Step 5: Regenerate the autoload array for extensions
To regenerate the autoload array, execute the following script from the root of your eZ Publish Legacy directory:
Step 6: Link assets
Assets from the various bundles need to be made available for the webserver through the web/ document root.
The following commands will first symlink eZ Publish 5 assets in "Bundles" and the second will symlink assets (design files like images, scripts and css, and files in var folder) from eZ Publish Legacy:
Step 7: Clear the caches
Whenever an eZ Publish solution is upgraded, all caches must be cleared in a proper way. This should be done from within a system shell:
Navigate into the new eZ Publish directory.Run the script using the following shell command:cd /<ezp5-root>/ezpublish_legacy/php bin/php/ezcache.php --clear-all --purgePurging ensures that the caches are physically removed. When the "--purge" parameter is not specified, the caches will be expired but not removed.
Note: Sometimes the script is unable to clear all cache files because of restrictive file/directory permission settings. Make sure that all cache files have been cleared by inspecting the contents of the various cache sub-directories within the "var" directory (typically the "var/cache/" and "var/<name_of_siteaccess>/cache/" directories). If there are any cache files left, you need to remove them manually.