Expanded eZ Publish hosting requirements on shared server environments
By: Peter Keung | July 14, 2011 | eZ Publish development tips
We've worked with clients who use multi-server, fully redundant, clustered environments, and we've worked with clients in unique shared environments. If you are trying to determine the suitability of a LAMP web hosting environment for eZ Publish, there are a few simple requirements, which are well documented. In a dedicated or virtual hosting environment with full shell access, setup can be a breeze. However, sometimes the client has a specific shared web server that they must use, whether due to contractual limitations or various other internal constraints. Here is a list of extra eZ Publish requirements and complications that we've seen in shared hosting environments -- something you can check before proceeding!
- Sometimes the paths used in the cron job environment are different than in the command line environment for your account. This will cause complications if you have scripts relying on file paths.
- Ask for direct access to virtual host configurations. Otherwise, beware of potential limitations and syntax quirks within .htaccess for both rewrite rules and general configuration directives.
- Go through the full list of required PHP extensions and have the server administrator install them (since you probably don't have access to install them yourself!)
- Make sure the mysqli (not mysql) PHP extension is available. The database connection handler in eZ Publish for mysql is technically supported but we do not recommend it.
- Make extra sure the minimum PHP and MySQL requirements are met.
- Ensure that you have a way to edit the PHP configurations, whether that's through an account-specific php.ini file or through .htaccess.
- If PHP is running as a CGI module, you will have "index.php?" in every site URL.
- Be sure that at the least, the following commands are available for you on the command line: chown, chmod, stat, wget, php, mysql
- In eZ Publish 4.4 and higher, the default session handler is the default PHP session handler. You might not have access to the location in which the session information is stored (such as the /tmp folder), so you might have to fall back to the old database session handler
- Do you have access to subdomain management and creation? If eZ Publish is the only system hosted on the account, then you can still fall back to URI-based siteaccess matching.
- If you need to access external URLs from within your code, make sure your hosting account does not place any restrictions on outside connections. We had a particularly interesting limitation where the server could make IP-based connections but refused to do DNS lookups.
- PHP safe mode needs to be off. Not only is its use "highly discouraged" and deprecated, but it can cause some odd functionality problems.
Do you have any other "gotchas" on shared hosting environments? Or do you completely avoid them?