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:cpanel:use-cloudlinuxphpselector-on-ea4-with-lsws [2017/10/20 21:29]
Jackson Zhang
litespeed_wiki:cpanel:use-cloudlinuxphpselector-on-ea4-with-lsws [2019/09/25 15:43] (current)
Jackson Zhang
Line 1: Line 1:
-====== ​How to set to use CloudLinux PHP Selector ​instead ​of EA4 multi-PHP on cPanel EA4 + CloudLinux + LSWS? ======+====== ​Configuring cPanel EA4 + CloudLinux + LSWS to Use CloudLinux PHP Selector ​Instead ​of EA4 MultiPHP ​======
  
-If you use cpanel ​EA4 on CloudLinux system, ​when installing ​LSWS, LiteSpeed ​auto-installer script will add proper external apps for both EA4 muli-PHP ​and CloudLinux PHP Selector automatically, ​while php handlers will be set to use EA4-Multi-PHP ​by default with version 5.6.+If you use cPanel ​EA4 on CloudLinux system, ​the LiteSpeed(LSWS < 5.4) auto-installer script will add the proper external apps for both EA4 MultiPHP ​and CloudLinux PHP Selector automatically, ​when installing LSWS.  PHP handlers will be set to use EA4 MultiPHP ​by default with version 5.6. 
  
-The external apps are as the following: ​+However, there is an important change starting from LSWS 5.4,  ​external apps and script handlers ​are not necessary unless you want to specifily define handlers. External apps may still exist/be inherited if you upgrade LSWS from an earlier version but you may find the external app and script handler empty for the new installation. ​  
 + 
 +The followings are explained how an earlier version of LSWS(<​5.4) exnternal apps and script handler work or inherited external apps and script handlers for LSWS 5.4 and above. 
 + 
 +The following ​external apps are installed:
  {{ :​litespeed_wiki:​cpanel:​ea4-clselector-externalapps.png?​800 |}}  {{ :​litespeed_wiki:​cpanel:​ea4-clselector-externalapps.png?​800 |}}
  
-External app lsphp56:+External app ''​lsphp56''​:
 {{ :​litespeed_wiki:​cpanel:​ea4-clselector-externalapp-lsphp56.png?​800 |}} {{ :​litespeed_wiki:​cpanel:​ea4-clselector-externalapp-lsphp56.png?​800 |}}
  
-External app cl_phpselector:​+External app ''​cl_phpselector''​:
 {{ :​litespeed_wiki:​cpanel:​ea4-clselector-externalapp-cl_phpselector.png?​800 |}} {{ :​litespeed_wiki:​cpanel:​ea4-clselector-externalapp-cl_phpselector.png?​800 |}}
  
Line 15: Line 19:
 {{ :​litespeed_wiki:​cpanel:​ea4-clselector-handlers.png?​800 |}} {{ :​litespeed_wiki:​cpanel:​ea4-clselector-handlers.png?​800 |}}
  
-Suffix ​.php and .php5 will be set to handled by lsphp56 by default. +The suffixes ''​.php'' ​and ''​.php5'' ​will be handled by ''​lsphp56'' ​by default. 
-If you want to use CloudLinux PHP Selector, you should change ​suffix ​.php and .php5 to be handled by cl_phpselector.+If you want to use CloudLinux PHP Selector, you should change ​''​.php'' ​and ''​.php5'' ​to be handled by ''​cl_phpselector''​.
  
 {{ :​litespeed_wiki:​cpanel:​ea4-clselector-handler-cl_phpselector.png?​800 |}} {{ :​litespeed_wiki:​cpanel:​ea4-clselector-handler-cl_phpselector.png?​800 |}}
  
-As you have already know, when CloudLinux integrated with cpanel Easy Apache 4, how the php version being selected. Only when cpanel multi PHP version for a domain is the same as cpanel system default php version(which was set from the very beginning) , then CloudLinux PHP selector will be used, see detailed [[https://​docs.cloudlinux.com/​index.html?​php_selector_cpanel.html|here]].+===== Changing ​the Default =====
  
-For example, ​cpanel ​system PHP version ​default version is ea-php56,  ​for example1.com, ​Multi-PHP ​manager is set to ea-php56. Then .htaccess in example1.com document root will be added the following by cpanel:+As you may know, when CloudLinux is integrated with cPanel Easy Apache 4, the CloudLinux PHP Selector will only be used if the cPanel MultiPHP version for a domain is the same as the cPanel system default PHP version, which was set from the very beginning. (See "​[[litespeed_wiki:​cpanel:​use-cloudlinuxphpselector-on-ea4-with-lsws#​understanding_how_this_works|Understanding How This Works]]"​ below for more information.) 
 + 
 +For example, ​say the cPanel ​system PHP default version is ''​ea-php56'' ​for ''​example1.com''​and MultiPHP ​manager is set to ''​ea-php56''​. Then cPanel will add the following to the ''​.htaccess'' ​in ''​example1.com'''​s ​document root:
  
   # php -- BEGIN cPanel-generated handler, do not edit   # php -- BEGIN cPanel-generated handler, do not edit
Line 31: Line 37:
   # php -- END cPanel-generated handler, do not edit   # php -- END cPanel-generated handler, do not edit
  
-If you want to use CL PHP selector ​7.0, How do you doWhile , you don't worry about "​AddType application/​x-httpd-ea-php56"​ in .htaccess. You really need to understand how CloudLinux PHP Selector works with cpanel EA4.  In this case, you just need to check what CloudLinux php selecter set for this account. If CL php selecter is set to native, then cpanel EA4 Multi PHP version used. If CL php selector Version other than native used, then web server will use CL PHP selector version.+So, what do you do if you want to use CL PHP Selector ​7.0 (for example)?
  
-we run the following command to check example1 user: +It's important to understand how the CloudLinux PHP Selector works with cPanel EA4.  In this case, you just need to check which CloudLinux PHP Selector is set for this account. If CL PHP Selector is set to ''​native'',​ then cPanel EA4 MultiPHP version is used. If a CL PHP Selector version other than ''​native''​ is used, then the web server will use the CL PHP Selector version chosen. 
-  /usr/bin/cl-selector ​--summary ​php --user example1+ 
 +There'​s no need to worry about ''​AddType application/​x-httpd-ea-php56''​ in the ''​.htaccess''​ file.  It will be overridden by the CloudLinux PHP Selector setting. 
 + 
 +Run the following command to check ''​example1'' ​user: 
 +  /usr/bin/selectorctl ​--user-summary --user example1
   5.1 e - -   5.1 e - -
   5.2 e - -   5.2 e - -
Line 45: Line 55:
   7.1 e - -   7.1 e - -
   native e d s   native e d s
-You can set it to use CL PHP selector ​7.0 instead of native: +You can set it to use ''​CL PHP Selector ​7.0'' ​instead of ''​native''​
-  ​/usr/bin/cl-selector ​--select=php --version=7.0 --user example1 +  ​selectorctl ​--set-user-current=7.0 --user=example1 
- +To verify 
-To verify +  /usr/bin/selectorctl ​--user-summary --user example1
-  /usr/bin/cl-selector ​--summary ​php --user example1+
   5.1 e - -   5.1 e - -
   5.2 e - -   5.2 e - -
Line 61: Line 70:
   native e d -   native e d -
  
- ​You ​should be able to see CL-PHP selector ​7.is used at php info page.+Check the PHP Info page, and you should ​see CL PHP Selector 7.0 is in use. 
 +  
 + ===== Understanding How This Works ===== 
 +How does cPanel know whether to get the PHP version from ''​.htaccess''​ or from the CloudLinux PHP Selector? 
 + 
 +A file search for ''​.htaccess''​ is performed in the current directory and in the parent directories. If the file is not found, then the system default PHP version is applied. The system default PHP version can be changed via the CloudLinux PHP Selector. 
 + 
 +If ''​.htaccess''​ is found, then the following rules are applied ​to determine the PHP version:  
 + 
 +  - If CageFS is disabled, then the CL PHP Selector is not active and the PHP version from ''​.htaccess''​ is applied. 
 +  - If CageFS is enabled, then: 
 +    ​If the PHP version specified in ''​.htaccess''​ differs from the ystem default, then the ''​.htaccess''​ version is applied. 
 +    - If the system default PHP version is specified in the ''​.htaccess''​ file, then the CL PHP Selector version is applied: 
 +      - If ''​native''​ is chosen in the CL PHP Selector, then the ''​.htaccess''​ PHP version is applied. 
 +      - If the PHP version chosen in the CL PHP Selector differs from ''​native'',​ then the CL PHP Selector version is applied. 
 + 
 +**Note:** If you are using a version of cPanel prior to 11.56, please be aware that it does not support hooks for MultiPHP Manager. As a result, such changes are handled by cron job and come with up to a 10-minute delay. 
 + 
 +For more on this, see [[https://​docs.cloudlinux.com/​index.html?​php_selector_cpanel.html|the CloudLinux documentation]]. 
 + 
 +===== Using alt-php Within MultiPHP Manager ===== 
 +**As of LSWS v5.3RC1, you can use alt-php directly from MultiPHP Manager** 
 + 
 +In cPanel & WHM version 66 and later, EasyApache 4 allows you to use Vendor-provided PHP versions such as CloudLinux ​PHP selector ​right from MultiPHP ManagerThis includes ''​alt-php44'',​ ''​alt-php51'',​ ''​alt-php52'',​ ''​alt-php53'',​ ''​alt-hpp54'',​ ''​alt-php55'',​ ''​alt-php56'',​ ''​alt-php70'',​ ''​alt-php71'',​ ''​alt-php72''​. The ''​alt-php''​s are supported by LiteSpeed from 5.3RC1.  
 + 
 +LSWS versions 5.2.x and below //do not// support ''​alt-php'',​ so if you are still using such a legacy version, please continue to use ''​ea-phpxx''​ only. Skip this section, and follow the above steps to determine if CloudLinux PHP selector ​is used. Do not use MultiPHP Manager. 
 + 
 +Using cPanel MultiPHP Manager is the recommended method, since it is easy to understand and supports both ''​ea-php''​ and ''​alt-php''​. ​ CloudLinux PHP selector sometimes might be a little complicated to understand, hence it is not recommended. An advanced user can choose either one as preferred, as long as it is understood how CloudLinux PHP selector works together with WHM/cPanel MultiPHP Manager. The following section **Why CloudLinux PHP Selector Works on Apache but Does Not Work on LSWS** provides a good example of how complicated it can be to try enforcing everything to ''​alt-php''​ while using CloudLinux PHP Selector. Unless you understand it well, we don't recommend you go through such a complicated path for such little benefit. MultiPHP Manager could simply make your life easier.  
 + 
 +{{ :​litespeed_wiki:​cpanel:​cpanel-multiphp-altphp.png?​600 |}} 
 + 
 +===== Why CloudLinux PHP Selector Works on Apache but Does Not Work on LSWS ===== 
 +In a cPanel EA4 and CloudLinux environment,​ Most of the LSWS LSPHP external apps such as ''​lsphpxx''​ are pointing to ''​ea-phpxx'',​ instead of ''​alt-phpxx''​. Only one external app, ''​cl_phpselector''​ is pointing to ''/​usr/​local/​bin/​lsphp''​ (the CloudLinux PHP selector binary). 
 +  lsphp54->​ /​opt/​cpanel/​ea-php54/​root/​usr/​bin/​lsphp 
 +  lsphp55->​ /​opt/​cpanel/​ea-php55/​root/​usr/​bin/​lsphp 
 +  lsphp56->​ /​opt/​cpanel/​ea-php56/​root/​usr/​bin/​lsphp 
 +  lsphp70->​ /​opt/​cpanel/​ea-php70/​root/​usr/​bin/​lsphp 
 +  lsphp71->​ /​opt/​cpanel/​ea-php71/​root/​usr/​bin/​lsphp 
 +  lsphp72->​ /​opt/​cpanel/​ea-php72/​root/​usr/​bin/​lsphp 
 +  cl_phpselector->​ /​usr/​local/​bin/​lsphp 
 + 
 +PHP handlers: 
 +  php  -> cl_phpselector 
 +  php5 -> cl_phpselector 
 +  php54-> lsphp54 
 +  php55-> lsphp55 ​   
 +  php56-> lsphp56 
 +  php70-> lsphp70 
 +  php71-> lsphp71 
 +  php72-> lsphp72 
 +     
 +The above is the recommended way, and is the default setup for such an environment.  
 + 
 +{{ :​litespeed_wiki:​cpanel:​cpanel-ea4-cloudlinux-apache-lsws-different-php.png?​800 |}} 
 + 
 +Some users may want to point every external handler to ''​alt-phpxx'',​ like so: 
 +  lsphp54->​ /​opt/​alt/​php54/​usr/​bin/​lsphp 
 +  lsphp55->​ /​opt/​alt/​php55/​usr/​bin/​lsphp 
 +  lsphp56->​ /​opt/​alt/​php56/​usr/​bin/​lsphp 
 +  lsphp70->​ /​opt/​alt/​php70/​usr/​bin/​lsphp 
 +  lsphp71->​ /​opt/​alt/​php71/​usr/​bin/​lsphp 
 +  lsphp72->​ /​opt/​alt/​php72/​usr/​bin/​lsphp 
 +  cl_phpselector->/​usr/​local/​bin/​lsphp 
 +   
 +This causes a problem. 
 + 
 +For example: A user account inherits the cPanel system default PHP version, and the CloudLinux PHP selector is set to use ''​php70''​ for that user account. Apache seems to return the correct version of ''​php70'',​ but LSWS always seems to return ''​php56''​ (or whatver cPanel'​s Multi PHP Manager system default PHP version is). 
 + 
 +In actuality, there is nothing wrong with LiteSpeed Web Server. LSWS is following the correct CloudLinux-cPanel-EA4 PHP determination work flow.  
 + 
 +  * **Apache**: When a user account inherits the cPanel system default PHP configuration from cPanel Multi PHP Manager, the CloudLinux PHP Selector is used. Hence it returns the right PHP version. ​  
 +  * **LSWS**: Since you changed the external app associated with the cPanel default version (''​ea-php56''​ in this example), it will look for the suffix ''​php56'',​ which points to ''​lsphp56''​. 
 + 
 +''​lsphp56''​ was: 
 +  lsphp56->​ /​opt/​cpanel/​ea-php56/​root/​usr/​bin/​lsphp 
 + 
 +You changed it to: 
 +  lsphp56->​ /​opt/​alt/​php56/​usr/​bin/​lsphp 
 + 
 +''/​opt/​alt/​php56/​usr/​bin/​lsphp''​ is differnt than cPanel'​s default ''​ea-php56''​(which is  ''/​opt/​cpanel/​ea-php56/​root/​usr/​bin/​lsphp''​),​ hence the CloudLinux PHP Selector won't be used. Instead, ''​lsphp56''​ (or, ''/​opt/​alt/​php56/​usr/​bin/​lsphp''​) will be always used for LSWS. 
 + 
 +So, how can you get the PHP version you want? The key is to tell LSWS to use the CloudLinux PHP selector instead of a particular version of alt-php. 
 + 
 +You can either update the external app ''​lsphp56''​ to point to PHP selector binary ''/​usr/​local/​bin/​lsphp'',​ or more easily, update the PHP handler of suffix ''​php56''​ to be served by ''​cl_phpselector''​ instead of ''​lsphp56''​. 
 + 
 +You can apply the second solution through the command line or through LSWS Web Admin Console. 
 + 
 +==== Through the Command Line ==== 
 +  vi /​usr/​local/​lsws/​conf/​httpd_config.xml 
 + 
 +Change: 
 +    <​scriptHandler>​ 
 +      <​suffix>​php56</​suffix>​ 
 +      <​type>​lsapi</​type>​ 
 +      <​handler>​lsphp56</​handler>​ 
 +    </​scriptHandler>​ 
 +To: 
 +    <​scriptHandler>​ 
 +      <​suffix>​php56</​suffix>​ 
 +      <​type>​lsapi</​type>​ 
 +      <​handler>​cl_phpselector</​handler>​ 
 +    </​scriptHandler>​ 
 +     
 +==== Through LSWS Web Admin Console ==== 
 + 
 +Before: 
 +{{ :​litespeed_wiki:​cpanel:​cpanel-ea4-cloudlinux-apache-lsws-different-php-beforefix.png?​800 |}} 
 +After: 
 +{{ :​litespeed_wiki:​cpanel:​cpanel-ea4-cloudlinux-apache-lsws-different-php-afterfix.png?​800 |}} 
 + 
 +Restart LSWS after any configuration change.
  • Admin
  • Last modified: 2017/10/20 21:29
  • by Jackson Zhang