Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
litespeed_wiki:php:per-user-php-ini [2019/08/29 21:02]
Jackson Zhang
litespeed_wiki:php:per-user-php-ini [2020/01/01 15:13] (current)
George Wang [8. Use of ''disable_functions'']
Line 6: Line 6:
  
 =====  Supports cPanel MultiPHP INI Editor out of the box ===== =====  Supports cPanel MultiPHP INI Editor out of the box =====
-When a user login to cPanel and edit his own php settings through [[https://​documentation.cpanel.net/​display/​82Docs/​MultiPHP+INI+Editor+for+cPanel|cPanel ​MultiPHP INI Editor]] (cPanel ​>> Home >> Software ​>> MultiPHP INI Editor), ​cPanel MultiPHP INI Editor ​will save changes to three files in /​home/​$USER/​public_html/: ​  ​php.ini file, the user.ini file, and .htaccess file. +When a user logs in to cPanel and edits PHP settings through ​cPanel'​s ​[[https://​documentation.cpanel.net/​display/​82Docs/​MultiPHP+INI+Editor+for+cPanel|MultiPHP INI Editor]] (**cPanel > Home > Software > MultiPHP INI Editor**), the editor ​will save changes to three files in ''​/​home/​$USER/​public_html/​''​the ''​php.ini'' ​file, the ''​user.ini'' ​file, and the ''​.htaccess'' ​file. 
  
 For example: For example:
Line 78: Line 78:
   zlib.output_compression = Off   zlib.output_compression = Off
  
-Why the same changes are being saved to three different files at the same time? It is because ​of different ​php handler ​will use different files to apply the settings. ​User may change handler ​sometimes ​and three files keeping the same changes ​will make sure cPanel MultiPHP INI Editor settings will apply regardless of handler change.+You probably noticed that the same changes are being saved to three different files at the same time. This is because different ​PHP handlers ​will use different files to apply the settings. ​A user may change ​the handler ​at some point, ​and the three files will be udated accordingly to ensure the cPanel MultiPHP INI Editor settings will continue to apply.
  
-For Apache SuPHP, it will use php.ini. ​For Apache PHP CGI and PHP-fpm, it will use .user.ini. For CloudLinux mod_lsapi for Apache, it will use .htaccess. LiteSpeed will use settings in .htaccess.  ​+Apache SuPHP uses php.ini. ​
  
-LiteSpeed will be compatible with cPanel MultiPHP INI Editor out of box without extra configuration required. Please also keep in mind that you can not manually change settings in one file through ssh access ​and you will need to use cPanel MultiPhP INI Editor GUI to make any changes for your test.+Apache PHP CGI and PHP-fpm ​use .user.ini
  
-If in any situation, ​you explicitly want to apply /​home/​$USER/​public_html/​php.ini regardless of the cpanel ​default multi-files implementation,​ you will need to use ''​PHP_INI_SCAN_DIR''​ to manually set up as instructed ​earlier ​in this wiki, but it is not recommended ​to do so and you are encouraged to just use cPanel MultiPHP INI Editor ​ways of implementation+CloudLinux mod_lsapi for Apache uses .htaccess.  
 + 
 +LiteSpeed uses .htaccess. ​  
 + 
 +LiteSpeed is compatible with cPanel MultiPHP INI Editor out of the box with no extra configuration required. Please also keep in mind that you cannot manually change settings ​in any of the files through SSH. You must use cPanel MultiPhP INI Editor GUI to make any changes for your test. 
 + 
 +If at any time you explicitly want to apply ''​/​home/​$USER/​public_html/​php.ini'', ​regardless of the cPanel ​default multi-file implementation,​ you will need to use ''​PHP_INI_SCAN_DIR''​ to manually set it up as instructed ​later in this wiki. Howeverthis is not recommendedand you are encouraged to just use cPanel MultiPHP INI Editor.
  
 ===== 1. Define PHPRC or PHP_INI_SCAN_DIR for a domain on cPanel server ===== ===== 1. Define PHPRC or PHP_INI_SCAN_DIR for a domain on cPanel server =====
Line 146: Line 152:
 ===== 3. Define PHP_INI_SCAN_DIR at the Server Level in the WebAdmin Console ===== ===== 3. Define PHP_INI_SCAN_DIR at the Server Level in the WebAdmin Console =====
  
-Using the PHP_INI_SCAN_DIR environment variable allows you to use a variable that can set a standard location for the php.ini file in each virtual host. Unlike the PHPRC environment variable, though, PHP_INI_SCAN_DIR allows the use of the global php.ini file with the addition of a per-user php.ini.+Using the ''​PHP_INI_SCAN_DIR'' ​environment variable allows you to set a standard location for the php.ini file for each virtual host. Unlike the ''​PHPRC'' ​environment variable, though, ​''​PHP_INI_SCAN_DIR'' ​allows the use of the global php.ini file with the addition of a per-user php.ini.
  
-In your external application Environment setting (WebAdmin console > Server > External App > lsphp5)enter: ''​PHP_INI_SCAN_DIR=variable/​php.ini/​directory''​+In a control panel environment such as with cPanelea-phpxx will normally load the main php.ini, then scan additional .ini files, like in this example with ea-php73:
  
-Example:+{{ :litespeed_wiki:​php:​per-user-php-ini-additional-ini1.png?​800 |}}
  
-  ​PHP_INI_SCAN_DIR=$VH_ROOT/​public_html+To avoid missing any additional folders when scanning from ''/​opt/​cpanel/​ea-php73/​root/​etc/​php.d'',​ you should specify multiple additional scanning folders in ''​PHP_INI_SCAN_DIR'',​ separating them with '':''​.  
 + 
 +In your external application **Environment** setting (**WebAdmin Console > Server > External App > lsphp73**), enter:  
 + 
 +  ​PHP_INI_SCAN_DIR=/​opt/​cpanel/​ea-php73/​root/​etc/​php.d:​$VH_ROOT/​public_html 
 +or simply: 
 +  PHP_INI_SCAN_DIR=:​$VH_ROOT/​public_html ​  
 +{{ :​litespeed_wiki:​php:​per-user-php-ini-additional-ini2.png?​800 |}} 
 + 
 +After you save the change and restart LSWS, the phpinfo page of the accounts using lsphp73 should change to something similar to the following by scanning additional ''​.ini''​ for additional folders from ''​$VH_ROOT/​public_html'':​ 
 +{{ :​litespeed_wiki:​php:​per-user-php-ini-additional-ini3.png?​800 |}}
  
 The variables available for use are: The variables available for use are:
  
-  - $VH_ROOT: the virtual host's home directory +  - ''​$VH_ROOT''​: the virtual host's home directory 
-  - $VH_NAME: the virtual host's domain +  - ''​$VH_NAME''​: the virtual host's domain 
-  - $VH_USER: the virtual host's user+  - ''​$VH_USER''​: the virtual host's user
  
  ​**Note:​** ​  ​**Note:​** ​
-  * This method is not recommended if you replace Apache with suPHP. When replacing Apache with suPHP, the PHPRC environment variable is recommended. +  * This method is not recommended if you replace Apache with suPHP. When replacing Apache with suPHP, the ''​PHPRC'' ​environment variable is recommended. 
-  * The PHP_INI_SCAN_DIR environment variable is available for PHP 5.2.7 and up.+  * The ''​PHP_INI_SCAN_DIR'' ​environment variable is available for PHP 5.2.7 and up.
  
-Starting from LSWS 5.3.x, LSWS may automatically configure external applications and script handlers for control panels, hence it may not have external applications or script handlers anymore. If you want to define ''​PHPRC''​ environment variable for all external applications,​ you can use ''​PHP'' ​tab.+Starting from LSWS 5.3.x, LSWS may automatically configure external applications and script handlers for control panels, hence it may not have external applications or script handlers anymore. If you want to define ​the ''​PHPRC''​ environment variable for all external applications,​ you can use the **PHP** tab.
  
 ===== 4. Define PHPRC in Apache Configs ===== ===== 4. Define PHPRC in Apache Configs =====
Line 203: Line 219:
   LS_EXTAPP_ENV PHP_INI_SCAN_DIR=/​home/​USER1/​data/​   LS_EXTAPP_ENV PHP_INI_SCAN_DIR=/​home/​USER1/​data/​
   </​IfModule>​   </​IfModule>​
 +
 +===== 8. Use of ''​disable_functions''​ =====
 +
 +Please be aware, for security and performance reasons, ''​disable_functions''​ is unique and can only be set in php.ini, cannot be used in .htaccess, nor be overridden via ''​php_admin_value''​. You can only apply ''​disable_functions''​ via global or per-user php.ini. ​ It would be a security flaw if a user could modify it freely, hence it has been restricted by design in PHP itself, not by LiteSpeed. ​
 +
  
 ===== Notes ===== ===== Notes =====
  • Admin
  • Last modified: 2019/08/29 21:02
  • by Jackson Zhang