frame

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Sign In Register

[Webmin] Setting up multiple PHP versions in Webmin/Virtualmin

ReginaRegina Moderator
edited November 2019 in Web hosting control panels
Webmin control panel allows you to have several PHP versions in the same server. There is a possibility to choose different PHP versions for separate Virtual Servers (per domain and per directory).

0. Preliminary requirements

Webmin 1.8 using CentOS 7.

1. Log into your server

Log in to your server with root user. How to log into Linux based server see here.

2. Install PHP 5.6 on CentOS 7

Install the SCL Repo:

yum install centos-release-scl

Install the PHP packages:

yum install rh-php56 rh-php56-php-mysqlnd

3. Install second PHP version

In this case, we will install PHP 7.2 on CentOS 7. Install the SCL Repo:

yum install centos-release-scl

Install the PHP packages:

yum install rh-php72 rh-php72-php-mysqlnd

4. Enable “suexec_module” on server

This will allow Webmin to recognize different PHP versions:

vi /etc/httpd/conf/httpd.conf

Find and remove comment from line “#LoadModule suexec_module modules/mod_suexec.so”. It should look like this:

LoadModule suexec_module modules/mod_suexec.so

Save and close the file. Then restart Apache:

service httpd restart

5. Log into your Webmin control panel

If you haven't done it yet, see how to use it in the link here

6. Re-Check Configuration of the server

After logging into Webmin, go to Virtualmin, then go to “System Settings → Re-Check Configuration

If you see the error:

Virtualmin is configured to setup DNS zones, but this system is not setup to use itself as a DNS server. Either add 127.0.0.1 to the list of DNS servers or turn off the BIND feature on the module config page.”

Press on “list of DNS servers” and in the empty line in “DNS servers” section enter localhost IP: 127.0.0.1 and press “Save”.

Again go to “System Settings → Re-Check Configuration” and you should see something like this:

The following PHP versions are available : 5.5.38 (/usr/bin/php-cgi), 5.6.25 (/opt/rh/rh-php56/root/usr/bin/php-cgi), 7.2.10 (/opt/rh/rh-php72/root/usr/bin/php-cgi)

7. Modify Server Templates

Go to “System Settings → Server Templates”. Press on “Default Settings”.



In the line “Edit template section:” choose “Apache website”. Make sure that these settings are checked:

Automatically add appropriate SuExec directive? - Yes

And in the line “Edit template section:” choose “PHP Options”. Make sure that these settings are checked:

Default PHP execution mode: CGI wrapper (run as virtual server owner)

Save by pressing the button “Save”. From now on, all created Virtual Servers in Virtualmin will recognize different installed PHP versions.

8. Choose PHP version for your domain or directory

Now you just need to choose the required PHP version for your domain. Just press on the Virtual Server you want to choose the PHP version for and go to the “Server Configuration → PHP version”.



Here you can choose the PHP version for the whole domain and choose the different PHP versions for the selected directory (enter the name of directory in the empty line).


Comments

  • Hello

    in the step No. 4
    first i dont know how to find and save throw vi
    so i tried
    pico /etc/httpd/conf/httpd.conf
    and i didnt find the line you mentioned : 
    LoadModule suexec_module modules/mod_suexec.so

    and i am sure i made the first 3 steps right so what did i do wrong ?

    my VPS Ip: 194.135.89.64

    Thank you

  • edited August 2017
    I've done all the steps, but I have this problem: 
      "The Suexec command on your system is configured to only run scripts under /var/www, but the Virtualmin virtual server home directory is /home. CGI and PHP scripts run as domain owners will not be executed.
    .. your system is not ready for use by Virtualmin."
    Where can i find the right version of Suexec command?
    Thanks 
    Umberto
    Centos 6.9
  • ReginaRegina Moderator
    Spctec said:
    Hello

    in the step No. 4
    first i dont know how to find and save throw vi
    so i tried
    pico /etc/httpd/conf/httpd.conf
    and i didnt find the line you mentioned : 
    LoadModule suexec_module modules/mod_suexec.so

    and i am sure i made the first 3 steps right so what did i do wrong ?

    my VPS Ip: 194.135.89.64

    Thank you

    After you use the command below:

    vi /etc/httpd/conf/httpd.conf

    You will be inside the file, where you should find the line "#LoadModule suexec_module modules/mod_suexec.so". If you can not find the correct line, just go to the start of the file and enter:

    /LoadModule suexec_module modules/mod_suexec.so

    You will see this line and then just remove the "#" symbol. The line should not be commented and therefore will be enabled. If you can not find this module, just write it in:

    LoadModule suexec_module modules/mod_suexec.so

    In order to save it press "Esc + :" and then write:

    wq

    You will save and quit the file.

  • ReginaRegina Moderator
    I've done all the steps, but I have this problem: 
      "The Suexec command on your system is configured to only run scripts under /var/www, but the Virtualmin virtual server home directory is /home. CGI and PHP scripts run as domain owners will not be executed.
    .. your system is not ready for use by Virtualmin."
    Where can i find the right version of Suexec command?
    Thanks 
    Umberto
    Centos 6.9
    The tutorial above works for newly added Virtual Servers (domains). If you see the error "The Suexec command on your system is configured to only run scripts under /var/www, but the Virtualmin virtual server home directory is /home. CGI and PHP scripts run as domain owners will not be executed." or "This virtual server is using the mod_php execution mode for PHP, such does not allow per-directory version selection." please do the following steps:

    1. Log into your Webmin panel.
    2. In Virtualmin go to "System Settings -> Virtualmin configuration"
    3. Find the section "Defaults for new domains"
    4. In the line "Home directory base" select the second box and enter the following: /var/www
    5. Press "Save" on the bottom of the page.
    6. Then go to your Virtual Server (domain);
    7. Press "Server Configuration -> Website Options"
    8. Make sure these are checked and press "Save":

    Run CGI scripts as domain owner? - Yes
    PHP script execution mode - CGI wrapper (run as virtual server owner)

    9. Check "Server Configuration -> PHP versions" for PHP version selection.

    Please take a note, that the tutorial above is meant for newly added Virtual Servers to your Webmin panel and using it on already added domains, the basic directory from /home to /var/www should be changed. This may cause other errors in the website.


  • edited August 2017

    It works well!

    Thanks
    Umberto

  • Thanks , fixed
  • the tutorial has nothing to do with webmin because finally you have to have virtualmin
  • ReginaRegina Moderator
    Hey,

    This tutorial was meant for setting up multiple PHP versions using our prepared template with Webmin. This template by default has Virtualmin installed into it also.

    You can see all of our templates here:

    https://billing.time4vps.eu/knowledgebase/article/55/what-os-do-you-offer-/

  • ataghavataghav Member
    Dear Regina, Thank you for your detailed tutorial. I've a Virtualmin installed on Ubuntu 16.04 and after installing php5.6 in my OS, I did all the Virtualmin settings just as you said. All over the place, Virtualmin says that my php version is set to 5.6, but whenever I check phpinfo(); it still is 7.0. Is there any other hidden place that I need to hit and change some setting there to make it work?
    Thank you for your responce in advance
  • ReginaRegina Moderator
    Hey,

    This prepared tutorial is for our offered template with Webmin and it has CentOS 6 installed. It should have differences when installing into other operating system like Ubuntu 16.04. As  I do not know the exact steps you have taken and full configuration of your server, unfortunately, I can not comment on it. However, in some cases the PHP version should be also set in "base folder".


  • No package rh-php56 available.
    No package rh-php56-php-mysqlnd available.
    yum install centos-release-scl Installed
    i m on centos 7.6
  • JustinaJustina Moderator
    Hello,

    CentOS is a bit outdated with its PHP versions. However, you can install PHP 5.6 (or any other version) with help of EPEL and Remi:
    yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
    After that, install yum-utils which will give an opportunity for  more advanced package management:
    yum install yum-utils
    You can later use  yum-config-manager (provided by yum-utils) to activate Remi repository for installing various PHP versions:
    yum-config-manager --enable remi-php56
    After you enabled PHP version, you can install PHP with all needed modules:
    yum-config-manager --enable remi-php56
    yum install php php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-fileinfo
    You can check the PHP version by running:
    php -v
    You can also install PHP 5.6 version on CentOS for SAPI from webtatic.com:
    yum install epel-release
    rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
    Install PHP 5.6 mod_php SAPI by running:
    yum install php56w php56w-opcache
    As an alternative, you can use PHP 5.6 php-fpm SAPI:
    yum install php56w-fpm php56w-opcache
Sign In or Register to comment.

Time4VPS

Learn how to install a web and database server, email, FTP client or other applications. Discover and share information on server security or optimization recommendations.
Feel free to join our constantly expanding community, participate in discussions, strengthen your knowledge on Linux and Windows server management!
© 2013 - 2024 Time4VPS. All rights reserved.

Get In Touch