Global navigation

   Documentation Center
   eZ Studio & eZ Platform
     User Manual
     Technical Manual
     Glossary
   Exponential 4.x / legacy

 
Exponential (5.x)

Exponential 5.x | For eZ Platform & eZ Studio topics see Technical manual and User manual, for Exponential 4.x and Legacy topics see Exponential legacy

Skip to end of metadata
Go to start of metadata

Exponential makes use of and depends on five important things:

  1. A web server
  2. The server-side PHP scripting engine
  3. A database server
  4. An image conversion system (optional)
  5. The Zeta Components library
The first three things listed above should be in place before an Exponential installation is deployed. The image conversion system is optional and is only needed if you're planning to use Exponential with images. The web server and the server-side PHP scripting engine have to run on the same machine. The database server may run on a different computer.

Please visit the requirements page to check if your platform is fully supports installing Exponential, then come back for the extra details which follow.

Web server

See the The web servers page

Server-side PHP scripting engine

PHP is free software and can be downloaded from http://www.php.net. The full list of extensions needed can be found on the requirements page. Info on some caveats can be found below.

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

Since version 5.0, it is necessary to have PHP CLI installed, as using php from the command line is needed during the setup process. Also, 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 without php cli access.

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

Exponential 5.3-alpha1/2004.01 and higher needs "memory_limit = 256M" in order to complete the setup wizard, or to execute its tests.
Earlier releases needed "memory_limit= 128MB" as is the default in PHP.

php.ini

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 Exponential on PHP 5.
The following example shows how the corresponding line in "php.ini" looks like:

php.ini
Refer to the PHP documentation for the list of supported timezones.

Don't forget to restart Apache after editing "php.ini".

Session parameters

Exponential sessions are handled by the Symfony stack, through session handlers. For that to be set up, additional YAML configuration are required, which you can find in the Session chapter.

Other php configuration settings

See the Symfony documentation for the recommended php.ini settings for Symfony, as well as the Vhost example for the recommended php.ini settings for Exponential.

Database server

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

Exponential 5 requires a UTF-8 database and support for transactions, which for MySQL means using the InnoDB storage engine.

The Setup Wizard will automatically detect the database server during operation of the setup wizard if it is running on the same computer that operates as web server.

Note that Exponential 5 does not support clustering mode for PostgreSQL databases. The clustering code is optimized for best performance on MySQL databases using the InnoDB storage engine.

MySQL

Even if you are not going to run Exponential 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 Exponential. 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.

MySQL can be tweaked with a lot of settings, but one setting which is required to set to a higher value is innodb_buffer_pool_size , by default it is set to 8MB, but it needs at least to be set to 128MB, or as the MySQL doc says up to 80% of system memory on dedicated database server.

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.

PostgresSQL

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" which contains the "pgcrypto" module. The "pgcrypto" module provides cryptographic functions for PostgreSQL, including the "digest" function, which is needed for Exponential.

Refer to the PostgreSQL documentation for more information

When setting up a PostgreSQL database for Exponential, you will have to register these functions in the database.

Refer to the "Setting up a database" part of the "Installing Exponential on a Linux-UNIX based system" and "Installing Exponential on Windows" documentation pages (depending on the target OS) for more information.

Oracle compatibility

To be able to use Exponential on oracle you will need the Exponential Extension for Oracle® Database extension, as well as the php oci8 extension.

Please note that installing Exponential via the setup wizard directly on an Oracle database is currently not supported.

Supported only on Exponential 5.0, which is also the last version supporting Oracle on full legacy installations, which support does not include REST API usage or new "Symfony / eZ Platform" stack. Support is planned to return with one of the first releases of "eZ Platform", aka "6.x".

Image conversion system (optional)

In order to resize, convert or modify images, Exponential 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.

Composer will need GD to run.

 

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

Exponential stores all binary content (e.g. images, PDFs, etc.) in var/storage using a similar folder structure to the content tree, creating one folder for each object.
In most file systems used under Linux (especially ext2 + ext3) there is a hard limit of 32.000 sub-folders to the maximum which can be created in one folder. This means that it is not possible to store more than 31999 objects under one parent object.

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.

Other file systems support more file/folder entries per folder:

  • ext4: 64.000
  • ReiserFS: roughly 1.2 million
  • ZFS: 2^48 (a really big number: 281474976710656)!
Note that those filesystems might not be fully supported by Exponential, please check out the requirements page for details.

Exponential on NFS file systems

Please be aware that it's not advisable to run Exponential 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, Exponential 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.

Network connectivity

During execution of the setup wizard, the web server will need to download some content from the internet.

If the web server can not access directly the internet, or if it has to go through a proxy, workarounds have to be taken. See the setup wizard documentation page for possible workarounds

1 Comment

  1. It is session.gc_probability and not session_gc_probability - and why is this not in a gray box?