Enable Per-Directory PHP in LSWS (Native)
It is possible to use different versions of PHP in different directories, but only with a LiteSpeed Web Server (native) installation. It is not applicable for control panel or Apache configuration modes.
Set Different PHP Per Virtual Host
When you use LSWS (native) without Apache configuration, you can define the PHP version through a PHP handler for each virtual host. To do so, you normally define multiple server-level external PHP apps, and then assign different handlers at the server level and virtual host level. If no virtual host level hander is defined, the virtual host will inherit the server-level PHP configuration.
Example
We set these external apps at the server level: lsphp54
, lsphp55
, lsphp56
, lsphp70
, lsphp71
, lsphp72
.
The configuration for the lsphp70 external app looks like this, and the rest are similar to it:
At the server level, we define lsphp71 as the default handler to handle .php
and .php5
.
The virtual host will inherit the above server default handler lsphp71
unless overridden. Here we override the PHP version to lsphp56
for that virtual host:
Set Different PHP Per Directory Within One Virtual Host
We saw how to set different PHPs for each virtual host, but if you would like to set different PHPs within a virtual host, there is some additional configuration. Most likely you'll want to do this on a per-directory basis, so in addition to the above steps, you will set more handlers at the server level under Script Handler, and then use .htaccess
to change the PHP version.
Add handlers to server level: in addition to the existing .php
and .php5
suffix, add .php54
, .php55
, .php56
, .php70
, .php71
, .php71
, and .php72
.
On virtual host DEFAULT, we have changed it to use lsphp56
.
Under the sub directory /sub1/
, it will use lsphp56 as well. To change it to use different version lsphp72, vi sub1/.htaccess
ForceType application/x-httpd-php72
You can also change it to use another PHP version by changing the last two digits. such as:
ForceType application/x-httpd-php54
or
ForceType application/x-httpd-php55
or
ForceType application/x-httpd-php56
or
ForceType application/x-httpd-php70
or
ForceType application/x-httpd-php71
Set Different php.ini Per Directory
The above instructions will set different PHP versions by using server-level-defined external apps, hence only the global php.ini
is set for each version. To define a different php.ini
per directory, you will set all server level external apps at the virtual host level with different names and add the PHPRC
environment variable definition to php.ini
for each version under that virtual host.