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
Next revision Both sides next revision
litespeed_wiki:cpanel:use-cloudlinuxphpselector-on-ea4-with-lsws [2018/06/12 20:18]
Jackson Zhang [Changing the Default]
litespeed_wiki:cpanel:use-cloudlinuxphpselector-on-ea4-with-lsws [2018/08/13 15:09]
Lisa Clarke [Why CloudLinux PHP selector works on Apache but does not work on LSWS?] Proofreading
Line 40: Line 40:
  
 Run the following command to check ''​example1''​ user: Run the following command to check ''​example1''​ user:
-  /​usr/​bin/​selectorctl --summary ​php --user example1+  /​usr/​bin/​selectorctl --user-summary --user example1
   5.1 e - -   5.1 e - -
   5.2 e - -   5.2 e - -
Line 52: Line 52:
   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 
-or  ​ 
   selectorctl --set-user-current=7.0 --user=example1   selectorctl --set-user-current=7.0 --user=example1
 To verify: ​ To verify: ​
-  /​usr/​bin/​selectorctl --summary ​php --user example1+  /​usr/​bin/​selectorctl --user-summary --user example1
   5.1 e - -   5.1 e - -
   5.2 e - -   5.2 e - -
Line 95: Line 93:
  
 {{ :​litespeed_wiki:​cpanel:​cpanel-multiphp-altphp.png?​600 |}} {{ :​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: 2019/09/25 15:43
  • by Jackson Zhang