Wiki

Per user php.ini under Control Panel + LSWS

This document lists the options to use per user php.ini under the environment of hosting control panel(cPanel/WHM, Plesk, DirectAdmin, etc) + LiteSpeed Web Server(LSWS).

Per user php.ini is not compatible with PHP suEXEC daemon mode, you need to either turn off PHP suEXEC daemon mode, or setup dedicate PHP processGroup for the account that needs per user php.ini.

http://www.litespeedtech.com/products/litespeed-sapi/php/guide-to-suexec-setups

1. Define PHPRC in LSWS Server level External App Environment

Put something like “PHPRC=$VH_ROOT” in lsphp environment (Web Admin Console→Server→External App→lsphp5→Edit→Environment).

Note:

  • Make sure permission of php.ini file is readable by suEXEC user
  • PHPRC is to use user-defined php.ini ONLY.
  • The $VH_ROOT, $VH_NAME, and $VH_USER variables may be used to refer to user's home directory, domain, or user.

2. Define PHP_INI_SCAN_DIR in LSWS Server level External App Environment

Put something like “PHP_INI_SCAN_DIR=$VH_ROOT/php” in lsphp environment (Web Admin Console→Server→External App→lsphp5→Edit→Environment).

Note:

  • This method is not recommended if you replace apache with suphp, use PHPRC is recommended
  • Make sure permission of php.ini file is readable by suEXEC user
  • PHP_INI_SCAN_DIR is to use user-defined php.ini (additional ini settings) on top of master/default php.ini.
  • PHP_INI_SCAN_DIR is available for PHP 5.2.7 and up.
  • The $VH_ROOT, $VH_NAME, and $VH_USER variables may be used to refer to user's home directory, domain, or user.

3. Define PHPIniDir directive in configuration (vhost httpd.conf) from control panel

This can be done if only one vhost (user) needs its own php.ini (not for every vhost or multiple vhosts under one main account), “PHPIniDir” can be used.

  - Add entry "PHPIniDir /path/to/custom_ini/directory" to httpd.conf vhost section or a conf file included by vhost httpd.conf
  - Create custome ini file '/path/to/custom_ini/directory/php.ini' 
  - Restart LSWS 'service lsws restart' (i.e. on CentOS) to make the change effective.

Note:

  • PHPIniDir directive at vhost level is supported since LSWS 4.0.2
  • PHPIniDir directive is effective ONLY IF placed in the 1st (or main domain) vhost OF THE ACCOUNT (USER). The one placed in subdomain vhost will be ignored even though it is just for that vhost.
  • PHP suEXEC MUST BE ENABLED. Otherwise, only the PHPIniDir defined in server's global vhost (catch-all vhost) is effective.
  • Changes in the php.ini will not be picked up until new PHP process starts. This is because php.ini is read the first time when a php process starts.

Tips

  • Option 2 could be used along with Option 1 or 3 without conflicts. However, it should rarely be needed in the per user setup.
  • Option 3 takes precedence over Option 1 should they be used at the same time.
  • PHP suEXEC MUST BE ENABLED in LSWS.
 
litespeed_wiki/per_user_ini_in_control_panel_lsws.txt · Last modified: 2014/06/03 14:08 by George Wang