Path

7x / documentation / ez publish / technical manual / 4.3 / installation / normal installation / requirements for doing a no...


Caution: This documentation is for eZ Publish legacy, from version 3.x to 6.x.
For 5.x documentation covering Platform see eZ Documentation Center, for difference between legacy and Platform see 5.x Architecture overview.

Requirements for doing a normal installation

eZ Publish makes use of and depends on four important things:

  1.  A web server
  2.  A server-side PHP scripting engine
  3.  The eZ Components library
  4.  A database server
  5.  An image conversion system (optional)

The first three things should be in place before an eZ Publish installation is deployed. The image conversion system is optional and is only needed if you're planning to use eZ Publish with images. The web server and the server-side PHP scripting engine has to run on the same machine. The database server may run on a different computer.

For the moment, the following software solutions can be used:

Web server

Currently, only the Apache web server is supported. On Linux/UNIX based systems, it is recommended to use the latest version of the 2.x branch. Note that it must run in "pre-fork" mode instead of "threaded" mode - the reason for this is because some of the libraries that PHP extensions use might not be thread-safe.

On Windows, it is recommended to use the latest version of the 1.3 branch. (Apache 2.x for Windows is not supported since it only exists in "threaded" mode.)

The Apache web server is the most popular web server on the planet. It is free, open source and can be downloaded from http://www.apache.org.

Server-side PHP scripting engine

Since most of the eZ Publish system is written using the PHP scripting language, a PHP (hypertext pre-processor) server-side engine is needed. Make sure you have PHP 5.1.6 or later, up to PHP 5.3.x.

Note that it is strongly recommended to use the latest version of the 5.3.x branch. The reason for this is that eZ Publish runs faster on PHP 5.3 than on PHP 5.2 or PHP 5.1. In addition, some extensions may require PHP 5.3 (for example, the eZ Flow extension that comes together with eZ Publish). Make sure you use the PHP version that is required for your specific eZ Components version.

PHP is free software and can be downloaded from http://www.php.net. The following table reveals which functionality PHP needs to have compiled-in support for.

Name

Description

MySQLi extension (recommended)
 or MySQL functions

Required if a MySQL database will be used.

PostgreSQL functions

Required if a PostgreSQL database will be used.

Zlib compression functions

Required (see below).

DOM functions

Required (see below).

Session support

Required (enabled in PHP by default).

PCRE functions

Required (enabled in PHP by default).

GD2 support

Required if ImageMagick is not installed.

CLI support

Recommended (see below).

Client URL library functions

Recommended (see below).

Multibyte string functions

Required.

Exif functions

Recommended.

Zlib extension

Make sure that zlib support in PHP is enabled, otherwise the setup wizard will not be able to unpack downloaded packages during the installation process.

DOM extension

In most cases, DOM functions are enabled by default as they are included in the PHP core. However, some Linux distributions have PHP without compiled-in support for DOM. Instead, they provide DOM as a shared module in a separate RPM package called "php-xml".

PHP CLI

It is strongly recommended to have PHP CLI installed, otherwise some features like notifications, delayed search indexing, upgrade scripts, the collaboration system (content approval), clearing caches from within the command line, etc. will not work.

CURL

It is recommended to enable CURL support, otherwise some features like outbound connections via proxy and SSL support for eZSoap will not work.

PHP memory limit issue

eZ Publish needs at least 64 MB in order to complete the setup wizard. If you are using PHP 5.2.0 or earlier version, you'll have to increase the default "memory_limit" setting which is located in the "php.ini" configuration file. (Don't forget to restart Apache after editing "php.ini".) Normal operation requires about 16 MB. However, it is highly recommended that you keep the 64 MB setting since eZ Publish consumes a lot more memory as soon as you reindex the search, execute upgrade scripts, etc. Multilingual sites will also require at least 64 MB.

If you are using PHP 5.2.1 or later, there is no need to change the default "memory_limit" setting (it is set to 128 MB by default).

PHP timezone

You need to set the "date.timezone" value in the "php.ini" configuration file. If this setting is not specified, you will most likely receive error messages like "It is not safe to rely on the system's timezone settings" when running eZ Publish on PHP 5. The following example shows how the corresponding line in "php.ini" looks like:

date.timezone = <timezone>

Refer to the PHP documentation for the list of supported timezones. Don't forget to restart Apache after editing "php.ini".
 

eZ Components library

eZ Publish is an object-oriented application where each class definition is stored in a separate PHP source file. Instead of having a list of needed includes at the beginning of each source file, eZ Publish 4 makes use of the __autoload() function. When eZ Publish is installed, all class definitions of the eZ Publish kernel will have their paths listed in the "autoload/ezp_kernel.php" file. In addition, the "autoload/ezp_extension.php" file will contain an array of paths for class definitions that are a part of the extensions that come with eZ Publish. These arrays will most likely need to be updated in the future (for example, when you install new extensions or configure existing ones using the "Setup - Extensions" part of the administration interface). This requires eZ Components version 2007.1.1 or higher to be installed. In particular, you need to install the File and Base components ("ezcBase" and "ezcFile"), otherwise eZ Publish will not be able to update autoload arrays.

eZ Components is an enterprise ready general purpose PHP components library used independently or together for PHP application development. eZ Components can be downloaded from http://ezcomponents.org/download. In the future, eZ Components will be bundled with eZ Publish. Refer to http://ezcomponents.org/docs/install for information about how to install eZ Components.

Important note

Starting from version 2008.1, the eZ Components library requires PHP version 5.2.1 or higher up to PHP 5.3.x.

Database server

eZ Publish stores miscellaneous data structures and actual content using a database. This means that a database server has to be available for eZ Publish at all times. Follow this link to the eZ Publish requirements page to find which database solutions eZ Publish is compatible with.

The setup wizard will automatically detect the database server as long as it is running on the same computer that functions as the web server. eZ Publish 4 requires a UTF-8 database.

Note that eZ Publish 4 does not support clustering for PostgreSQL databases. The clustering code is optimized for best performance and focused on MySQL databases using the InnoDB storage engine.

Even if you are not going to run eZ Publish in a clustered environment, the use of InnoDB is required. This storage engine makes it possible to use transaction-safe tables in a MySQL database. (Database transaction support is enabled by default in eZ Publish. This feature makes the system less vulnerable to database errors and inconsistencies due to aborted requests.) Contact your database administrator if you are unsure about whether InnoDB is available on your server.

If you want to use PostgreSQL, make sure the "pgcrypto" module is installed. On Linux/UNIX, you may need to install a separate package called "postgresql-contrib" (refer to the PostgreSQL documentation for more information), which contains the "pgcrypto" module. The "pgcrypto" module provides cryptographic functions for PostgreSQL, including the "digest" function, which is needed for eZ Publish. When setting up a PostgreSQL database for eZ Publish, you will have to register these functions in the database. Refer to the "Setting up a database" part of the "Installing eZ Publish on a Linux/UNIX based system" and "Installing eZ Publish on Windows" documentation pages (depending on the target OS) for more information.

Known issue with running PHP5.3 on MySQL: Some people (like Windows users with both IPv4 and IPv6 installed ) experience problems connecting to the database server using host names like "localhost"... If you experience problems, try using IPv4 address like "127.0.0.1". This is due to a connectivity problem when running PHP5.3 on MySQL. So, please replace the database server name "localhost" with the IP address of the machine, or "127.0.0.1", which is reserved for the local host.

Session parameters

In order to support ezpSessionHandlerDB, session.hash_function and session.hash_bits_per_character in php.ini should be combined with the goal of never generating keys longer then 32 bytes.

Default PHP settings (MD5):

session.hash_function = 0
session.hash_bits_per_character = 4

Recommended settings (SHA-1):

session.hash_function = 1
session.hash_bits_per_character = 5

Oracle compatibility

The version 1.8 of the eZ Publish Extension for Oracle® Database makes it possible to use Oracle as a database for eZ Publish 4.0.1 and higher. Note that earlier versions of the extension are not compatible with eZ Publish 4.

Image conversion system (optional)

In order to scale, convert or modify images, eZ Publish needs to make use of an image conversion system. One of the following software packages (both are free) can be used:

ImageMagick supports more formats than GD and usually produces better results (better scaling, etc.). The setup wizard will automatically detect the pre-installed image conversion system(s).

The installation and setup of required software solutions (outlined above) is far beyond the scope of this document. Please refer to the homepage and documentation of the different software solutions.

Supported browsers

For the supported browser list please check the administration interface chapter.

Limitation on some file systems when storing large number of content files

eZ Publish stores all disc related content (eg Images, PDF's etc) in var/storage like the structure from content tree, creating one folder for each object. In most file systems used under Linux (especially ext2 + ext3) there exists a hard LIMIT TO 32000 directories per folder. So it is not possible to store more than 31999 objects under one folder.

To get around this limitation without changing the file system, you can split your content tree so that you don't have more than 32k content files (example: images) in the same folder.
Examples of file systems that supports more file/folder entries per folder. 
- ReiserFS: roughly 1.2 million per directory
- ZFS: 2^48 (a really big number: 281474976710656)!

eZ Publish on NFS file systems

Please be aware that it's not advisable to run eZ Publish on NFS file systems as you may experience issues. The cause of the issues may be performance, as NFS will slow down on heavy network traffic, slow access to files, or file access concurrency regarding file lock. Also, eZ Publish currently uses the flock() PHP function, which is not considered stable for NFS shares.

NFS should only be used to store distributed data such as cache, or binary files, in clustered environments.

Balazs Halasy (14/09/2010 8:57 am)

Ricardo Correia (11/10/2013 10:55 am)

Geir Arne Waaler, Ricardo Correia


Comments

  • About DOM module

    I got some pain installing the software on Windows XP.

    Using PHP 5.2.5, I installed the core packages and by mistake also installed the 'domxml' extension package.

    After lots of searching, I found out that this antique package doesn' coahite very well with DOM core feature of PHP5 and removing that package solved all my trouble.

    So make sure to NOT install the 'domxml' package in this cas, or desactivate it.

    By the way, I thinks this incompatibility should be easy to check during installation process.

    • Re: About DOM module

      Hi, seems that the setup wizard in 4.0.1 and later will check if DOM is available, see http://issues.ez.no/12212 (feel free to comment there if needed). Thanks!
      • Re: Re: About DOM module

        Unfortuantely, the fix for issue 12212 did not fix the problem mentioned above: the domxl extension can be active at the same time as the dom extension, and take over the definition of the domxml class, making the installation crash. So be sure to verify this configuration in your phpinfo() output before staring the setup wizard.
        • Re: Re: Re: About DOM module

          A noob here. I'm using MAMP v1.7.1 on Mac OS X v10.4.11 as the base server stack. It seems (in my inexpert opinion) to meet all of eZ's requirements. Looking in the php Info section of MAMP's start page, it has the following in its DOM section:

          DOM/XML enabled
          DOM/XML API Version 20031129
          libxml Version 2.6.29
          HTML Support enabled
          XPath Support enabled
          XPointer Support enabled
          Schema Support enabled
          RelaxNG Support enabled

          Am I cooked? Will eZ run on this php (v5) installation? Can you tell? If not, how do I fix it?
          • Re: Re: Re: Re: About DOM module

            please ask questions on forums, not in doc pages
  • PHP memory limit

    Concerning PHP memory limit, I suggest putting more than 64 MB. Some pages of my site where showing:

    Fatal error: eZ Publish did not finish its request
    The execution of eZ Publish was abruptly ended, the debug output is present below.

    without any other indications (no debug output, no php memory limit message). Took me a bit to find out it was because the php scripts didn't have enough memory. Also, the assumptions that if you have PHP > 5.2.1 the memory limit will be to 128 MB is wrong, it really depends on your distro. On Ubuntu 8.04.1 lts server the limit is set to 16 MB by default.