Domainnameshop
Frequently asked questions

How do I change the PHP configuration for my web hotel?
This entry in our frequently asked questions is directed to advanced users, everything you do is at your own risk and responsibility.

Note! If you change your PHP configuration, things may stop working, either immediately or later. See here for some known problems with PHP 5.3 and differences between our former support for PHP 5.2 and current PHP 5.3, and here for PHP 5.5 specific information.


General info

Our webservers' standard PHP configuration is good enough for the majority of applications. If you know you need different config settings, you may customize the configuration at your own risk. Such customization may be:

  • IonCube or Zend Guard Loader
  • Settings for error display, timezone, magic_quotes, etc.
  • Resource limits, e.g. memory (memory_limit, post_max_size, upload_max_filesize), runtime (max_execution_time, max_input_time) etc. MAY NOT be INCREASED or EXCEEDED.
  • Security settings for Suhosin (all variables prefixed with suhosin) MAY NOT be INCREASED or EXCEEDED.

As opposed to mod_php based solutions, you cannot customize PHP config settings directly in .htaccess.

If you try to do so, you will get "internal server error".

If you customize settings as those mentioned above, and you get errors or malfunctions in your software, double-check that you have not typoed or made other mistakes in your customizations. If you cannot make it work at all, leave it to an expert, or revert to our standard configuration. We cannot provide support for such customization.

If you increase or exceed resource limits (which is not permitted), we may have to deactivate the PHP code in question and/or the configuration file. If your resource needs are greater than which we can provide, you should use a dedicated server or virtual private server.

PHP is configured at several levels

  1. Runtime level (in the PHP script, PHP_INI_USER, PHP_INI_ALL, ini_set()
  2. Directory level (you decide, PHP_INI_PERDIR, php.ini, sincePHP 5.3 also with .user.ini)
  3. System level (central configuration, we decide, "Master value", PHP_INI_SYSTEM and our php.ini)
  4. Hardcoded level (PHP compilation/installation, we do not change anything from Debian's defaults)

PHP's web pages have an overview over available settings.

Configuration of the PHP_INI_USER and PHP_INI_ALL types can be set in each script (or an include file), regardless of the installed PHP version.


ini_set()

PHP_INI_USER
PHP_INI_ALL

Most requests for system level changes to variables are unnecessary, the PHP developer/maintainer may set these in the program/script by using ini_set(), and it's very easy to check and confirm settings with ini_get().

Example ini_set() usage

<?php
  ini_set("display_errors",1);
  print(ini_get("date.timezone")."\n");
  ini_set("date.timezone","Europe/Berlin");
  print(ini_get("date.timezone")."\n");
?>

If you need to configure the timezone, replace Europe/Berlin with the timezone you require. Standard for our PHP 5.5 is "Europe/Oslo", so you may wish to change that.


.user.ini

PHP_INI_PERDIR
PHP_INI_USER

Some settings cannot be performed in a program/script. If you create your own .user.ini in the www folder, you only need to specify your customizations, as opposed to in php.ini, where you also must specify those you don't customize.

Example .user.ini

display_errors = On
date.timezone = "Asia/Jakarta"
magic_quotes_gpc = Off

If you need to configure the timezone, replace Asia/Jakarta with the timezone you want to use. See also PHP's supported timezone list.


php.ini

Because our PHP 5 installation is using suphp, you have the option of creating your own php.ini, and therefore also changing settings of the types PHP_INI_SYSTEM and php.ini. Copy and use our standard php.ini for PHP 5.3 or PHP 5.5 as a basis for your settings.

Do not your own php.ini from scratch, unless you include all our preconfigured variables!

Here is how to create your own php.ini:

  1. Download and copy our standard php.ini for PHP 5.3 or PHP 5.5 to your webhotel, e.g. /home/2/m/myname/php.ini. It is not recommended to leave this file readable by others. Do not create your own php.ini from scratch.
  2. Customize the file according to your needs.
  3. Edit .htaccess in the directory you want your own PHP settings for, by adding the following lines:
    <IfModule mod_suphp.c>
      suPHP_ConfigPath /home/2/m/myname/
    </IfModule>
    
    It's important that this path refers to the directory containing php.ini, and not the php.ini file itself.
  4. Note that php.ini may load even though you do not link to it in .htaccess!
  5. Note that you should not link to other webhotels' php.ini! This will make it more difficult for you to debug later on.
  6. Pay attention to changes we make in our php.ini!

To verify that your customizations have been loaded, check the configuration settings with phpinfo(), where the value "Loaded Configuration File" will display the name of the configuration file that was loaded. If it displays e.g. "/etc/php5/cgi/php.ini", your .htaccess setting was not successful. Check your .htaccess and php.ini, and try again.

If you get an "internal server error" message, you've probably made a mistake, such as trying a setting that's invalid, using the wrong file permissions (PHP 5-scripts on our webservers must not be writeable for others), etc.


Extensions, modules, and plugins

Many extensions can be installed in your own webhotel and loaded by a modified php.ini. They cannot be loaded with .user.ini.

We do not provide support for such extensions, even if a very nice support person helped you install it the first time..

Several such extensions are so-called PHP accelerators or "optimizers", which essentially offer you the following two services:

  1. Theoretical performance improvements
  2. Obfuscated/encrypted source code

The theoretical performance improvements will often backfire as lost performance, because the accelerators assume that PHP is running as integrated, optimizable code (mod_php) in the webserver itself. Our webservers run PHP as CGI under suphp for added security, which means that your main interest will probably be in obfuscation/encryption.

Some PHP software require e.g. IonCube, your software vendor will provide you with the information necessary for deciding what to use. We do not provide support for such extensions.

The examples below are provided for your convenience only, and you may use them as examples on how to load extensions in general, at your own risk and responsibility.

IonCube

If you have an extension from IonCube, make sure that you use the version for Linux (x86-64) and your webhotel's PHP version. You can load it by adding a separate line in your php.ini. We do not provide support for IonCube.

Use the Linux (x86-64) version. The x86 version may also work.

PHP 5.3

zend_extension=/home/1/m/mittnavn/ioncube/ioncube_loader_lin_5.3.so

PHP 5.5

zend_extension=/home/1/m/mittnavn/ioncube/ioncube_loader_lin_5.5.so

Substitute the path to your webhotel for /home/1/m/myname and the path to the IonCube Loader for ioncube/ (remember to use the complete filename).

If you experience problems, consult the user guide/documentation for your software and IonCube, and if necessary, contact your software vendor's support service.

Zend Optimizer/Zend Guard Loader

Some years ago, we supported Zend Optimizer. Zend Optimizer does not exist for PHP 5.3, use Zend Guard Loader instead. Zend doesn't support PHP 5.5 yet. We do not provide support for Zend Optimizer or Zend Guard Loader.

PHP 5.2 - Zend Guard Loader

Our PHP 5.3 based webservers have Zend Guard Loader preinstalled, you may load it like this from php.ini:

zend_extension=/usr/lib/php5/20090626/ZendGuardLoader.so

Zend recommends that if you need better performance, you may disable licensing:

zend_loader.disable_licensing=1

If you experience problems, consult the user guide/documentation for your software and Zend Guard Loader, and if necessary, contact your software vendor's support service.

PECL/PEAR extensions (e.g. Imagick

Imagick and many other extensions are pre-installed and active.

To get a list of our installed and activated PECL/PEAR extensions, either use phpinfo() or login to login.domeneshop.no and enter the command pecl l and/or pear l.

Note! Some of these extensions don't exist for PHP 5.5, check the documentation for the extension you're interested in.

You are free to install further PECL extensions to your own webhotel, but not to our central servers. This is at your own risk. We do not provide support for this.

Custom extensions

If you need to add/activate additional extensions, PHP permits the use of the module's complete path in php.ini. This allows the use of both modules installed by us, and those you choose to install yourself. As an example, you can use:

extension=/home/1/m/myname/my_extension.so

This is also at your own risk and responsibility.


See also

     What should I do to prevent my pages from being hacked?
     How do I see the PHP version and configuration?
     PHP 5.3, how does that work with Domainnameshop?
     Which resource limits do you have for PHP?

Keyword:  

[Back]