DirectAdmin has support for running two PHP versions alongside each other. Currently, the most popular combination is PHP 5.6 and 7.0. This way, you can support both legacy software as well as very new and up-to-date software.
In this tutorial, we will be using CustomBuild to run two PHP versions.
Prior to following this tutorial, you will need to make sure you are running CustomBuild 2.0. If this is not the case, please verify and update if needed. A step-by-step guide of how to do this can be found
here.
Note: PHP 7 is only supported by DirectAdmin 1.50.1 and newer.
Step 1: Altering the CustomBuild configuration
There are two ways to alter the CustomBuild configuration: directly modifying the options.conf
file or using the command line. In this guide, we will be using the command line.
In order to set the two PHP versions 5.6 and 7.0, first navigate to the CustomBuild folder:
cd /usr/local/directadmin/custombuild
Step 2: Setting the PHP versions
Next, run the following commands in order to set the versions:
./build set php1_mode php-fpm
./build set php2_mode php-fpm
./build set php1_release 7.0
./build set php2_release 5.6
Note: Using the above example, both PHP versions will be run in php-fpm
mode. This is required if you are using an Nginx and Apache reverse proxy. If you are not using a reverse proxy, you can change the PHP mode if needed.
Using PHP versions older than 5.6 is strongly discouraged as they have all reached their end of life (EOL), thus and no longer updated or maintained. As such, it is recommended that you use PHP 7 whenever possible, and use 5.6 purely for being able to temporarily support legacy applications.
Open the options.conf
file:
cd /usr/local/directadmin/custombuild
vi options.conf
Verify the first few lines match or occur at least once throughout the file:
php1_release=7.0
php1_mode=php-fpm
php2_release=5.6
php2_mode=php-fpm
If not, please rerun the commands above.
Step 3: Recompiling PHP
Recompile PHP and rewrite the configurations:
./build php n
./build rewrite_confs
This can take a long time, please don't interrupt the process. It is perhaps best if you ran the commands in a screen
session, and detach while the process is running in case your SSH session gets disconnected or interrupted.
Step 4: Setting the PHP versions
You are now able to select a PHP version per virtual host (website). All websites currently running on your DirectAdmin server will use the value set for php1_release
. In order to alter the PHP version per website, navigate to the User Level, select the domain name, click "Domain Setup" under "Your Account", click the domain name and scroll down. As demonstrated in the screenshot below, you will now be able to choose a PHP version. Note that after changing the version, it can take up to 1 minute to process the changes. A scheduled restart of the web server is added to the DirectAdmin task queue.
Thank you for reading our guide. You now have a DirectAdmin server running two PHP versions!
======================
結果:
我的 cd /usr/local/directadmin/custombuild
vi options.conf
php1_release=7.2
php1_mode=mod_php
php2_release=5.6
php2_mode=php-fpm
[root@server custombuild]# ./build php n
....... 跑很久.....
[root@server custombuild]# ./build rewrite_confs
Your license OS (CentOS 6) does not match the OS installed (CentOS 7).
Checking to ensure /etc/httpd/conf/ssl.crt/server.ca is set.
Using 162.210.98.121 for your server IP
**************************************
Apache 2.4.27 and higher will not negotiate http2 with mpm_prefork. Please do not use mod_php or disable http2 in the directadmin.conf
http://www.apache.org/dist/httpd/CHANGES_2.4.27
**************************************
Restarting apache.