Issue
How to configure different PHP versions per directories inside single domain when using suPHP?
Environment
CloudLinux OS 6(h)/7(h)/8
cPanel
Solution
While this is not available using PHP Selector UI, it is fairly simple to do manually. The important requirement is that PHP must be set to run in suPHP mode.
Tested with cPanel however it will work on any other server.
Here is quick how-to:
1. Configure handlers for different versions and point them to already provided php-cgi binaries, they all are visible from inside CageFS.
Add the following section to [handlers] section in /opt/suphp/etc/suphp.conf :
application/x-httpd-php52="php:/opt/alt/php52/usr/bin/php-cgi" application/x-httpd-php53="php:/opt/alt/php53/usr/bin/php-cgi" application/x-httpd-php54="php:/opt/alt/php54/usr/bin/php-cgi" application/x-httpd-php55="php:/opt/alt/php55/usr/bin/php-cgi" application/x-httpd-php56="php:/opt/alt/php56/usr/bin/php-cgi" application/x-httpd-php70="php:/opt/alt/php70/usr/bin/php-cgi" application/x-httpd-php71="php:/opt/alt/php71/usr/bin/php-cgi"
for EasyApache 4 you need to add handlers into /etc/suphp.conf file.
2. Add suPHP handlers for each version, this should be done before other configs. On cPanel server, edit /usr/local/apache/conf/includes/pre_virtualhost_global.conf and add the following section:
<IfModule mod_suphp.c> <Directory /> suPHP_AddHandler application/x-httpd-php52 suPHP_AddHandler application/x-httpd-php53 suPHP_AddHandler application/x-httpd-php54 suPHP_AddHandler application/x-httpd-php55 suPHP_AddHandler application/x-httpd-php56 suPHP_AddHandler application/x-httpd-php70 suPHP_AddHandler application/x-httpd-php71 </Directory> </IfModule>
3. Restart Apache:
# service httpd restart
That’s it, now Apache understands what binary should be used for different mime types. To use the desired version in a particular directory, just add a line to .htaccess in that directory (or create .htaccess file with that line, if it is not there). For example, for php5.4, add the following line:
AddHandler application/x-httpd-php54 .php .php5
Subdirectories will use the same PHP version as the parent unless you override it with another .htaccess entry in that subdirectory. To match PHP extensions selection with extensions selected by an end user for that PHP version in PHP Selector you have to follow http://docs.cloudlinux.com/index.html?php_extensions.html. This is not an ‘officially’ supported way to run multiple PHP per account, but it is a safe hack that will work for anyone using suPHP.
Note: This is not an ‘officially’ supported way to run multiple PHP per account, but it is a safe hack that will work for anyone using suPHP.
Note! There is one little trick that can be confusing. It applies only if you have PHP Selector enabled and you have non-native version selected there for a user. In that case, if the version that you assign through .htaccess is the same as ea-php version selected as system default version in WHM -> MultiPHP Manager -> System Default version, that version will not be applies, the version that you'll actually get will be the same as selected in PHP Selector.
Comments
0 comments
Please sign in to leave a comment.