Upgrade Downgrade phiên bản PHP trong Cestos

Tác giả: Dương Nguyễn Phú Cường
Ngày đăng: 4 năm trước


Hôm nay tôi tiếp tục chia sẽ đến các bạn cách nâng cấp phiên bản PHP mặc định của Vestacp đó là phiên bản PHP 5.6 lên phiên bản PHP 7.x, Các bạn có biết rằng hiệu suất của WordPress 3.6+ trở lên khi chạy trên PHP 7 đã được cải thiện đáng kể so với WordPress trên PHP 5.6, như thời gian phản hồi, xử lý các request đồng thời..v.v
  • Đầu tiên việc bạn cần làm là kết nối SSH dưới tài khoản quản trị cao nhất root và kiểm tra cập nhật các gói phần mềm hiện tại đầu tiên bằng command lênh:
sudo yum update
  • Sau việc cập nhật hoàn tất bạn kiểm tra xem phiên bản PHP hiện tại đang cài đặt trên máy chủ của bạn bằng command lệnh:
php -v
  • Việc tiếp theo bạn cần làm là cài đặt gói yum-utils bằng command lệnh sau, yêu cầu cài đặt sẽ hỏi bạn có muốn cài không thì bạn gõ y nhấn Enter:
sudo yum install yum-utils
  • Việc tải và cài đặt gói yum-utils thành công thì đến đây bạn cần kích hoạt remi để tiến hành nâng cấp bằng command lệnh sau:
– Kích hoạt remi-php70 nếu bạn muốn nâng lên phiên bản PHP 7.0
sudo yum-config-manager --enable remi-php70
– Hoặc remi-php71 nếu bạn muốn nâng cấp lên PHP 7.1
sudo yum-config-manager --enable remi-php71
–  Hoặc remi-php72 nếu bạn muốn nâng cấp lênh PHP 7.2
sudo yum-config-manager --enable remi-php72
  • Như vậy là việc kích hoạt remi đã thành công và tất cả còn lại là chạy lệnh cập nhật để tiến hành update phiên bản PHP, nếu có thông báo hỏi bạn muốn cập nhật/cài đặt bản mới không thì bạn gõ y và nhấn Enter:
sudo yum update
  • Khi việc cài đặt thành công bạn cần khởi động lại dịch vụ web server để phiên bản mới thực sự được cập nhật, bằng command lệnh sau:
– Nếu Máy chủ bạn cài đặt Vestacp Apache + NGINX thì bạn dùng command lệnh:
sudo service httpd restart
– Nếu Máy chủ bạn cài đặt Vestacp NGINX + PHP-FPM thì bạn dùng command lệnh:
sudo service php-fpm restart
  • Cuối cùng bạn cần kiểm tra lại phiên bản PHP cài đặt đã ok chưa bằng command lệnh:
php -v
Ví dụ sau khi cài đặt thành công và sử dụng lệnh php -v để kiểm tra như sau:
PHP 7.0.22 (cli) (built: Aug 2 2017 09:39:55) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
  • Công việc đến đây có vẽ như là hoàn thành rồi, tuy nhiên bạn cũng đừng quên khóa tính năng cập nhật cho phiên bản PHP cũ đã cài lên máy chủ bằng các dòng lệnh sau:
sudo yum-config-manager --disable remi-php56
sudo yum-config-manager --disable remi-php55
sudo yum-config-manager --disable remi-php56-debuginfo
sudo yum-config-manager --disable remi-php55-debuginfo
sudo yum clean all
sudo yum update
 

Installing PHP 7.3.3 on CentOS 7.6

Install EPEL Repository

To install the latest PHP 7.3.3 on CentOS 7.6, you need to first install EPEL repositories.
yum install epel-release

Install Remi Repository

Remi is a third party repository that provides the latest versions of PHP.
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Disable Remi PHP 5.4 repository

By default, the repository for PHP 5.4 is enabled and hence, to install the latest version of PHP, you need to disable this repo. The repositories can be enabled or disabled using the yum-config-manager command. This command is provided with the yum-utils package.
yum install -y yum-utils
yum-config-manager --disable remi-php54

Enable Remi PHP 7.3 repository

To enable Remi PHP 7.3 repository, run the command below.
yum-config-manager --enable remi-php73

Installing PHP 7.3.3 on CentOS 7.6

Now that we got the repositories to power this process, you can now install PHP 7.3.3 on CentOS 7.6.
yum install php
Once the installation, check the version by executing the command below;
php -v
PHP 7.3.3
 (cli) (built: Mar  5 2019 13:50:38) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.3, Copyright (c) 1998-2018 Zend Technologies
If you need to install PHP extensions, you can search and install  them by running the command below;
yum list php-*
yum install php-<extension_name>
Well, that is it about installing PHP 7.3.3 on CentOS 7.6. We hope this was informative. Enjoy  
Just run
yum install yum-utils -y
yum-config-manager --disable remi-php5*
yum-config-manager --disable remi-php74
yum-config-manager --disable remi-test
yum-config-manager --enable remi-php73
yum remove php php-*
yum install roundcube phpmyadmin -y
service httpd restart or service php-fpm restart

1.
CODE: SELECT ALL
yum remove php*
2.
CODE: SELECT ALL
yum install php71-php-imap php71-php-process php71-php-pspell php71-php-xml php71-php-xmlrpc php71-php-pdo php71-php-ldap php71-php-pecl-zip php71-php-common php71-php php71-php-mcrypt php71-php-gmp php71-php-mysqlnd php71-php-mbstring php71-php-gd php71-php-tidy php71-php-pecl-memcache --enablerepo=remi
3.
CODE: SELECT ALL
ln -s /usr/bin/php71 /usr/bin/php
4.
CODE: SELECT ALL
yum install yum-utils -y
5.
CODE: SELECT ALL
yum-config-manager --disable remi-php5*
yum-config-manager --disable remi-php74
yum-config-manager --disable remi-test
yum-config-manager --enable remi-php73
6.
CODE: SELECT ALL
yum install phpmyadmin -y 
7. go to /etc/httpd/conf.d/ and edit "phpMyAdmin.conf and put this configuration.
CODE: SELECT ALL
<Directory /usr/share/phpMyAdmin/>
   Order Deny,Allow
   Deny from All
   Allow from All
</Directory>

<Directory /usr/share/phpMyAdmin/scripts/>
   Order Deny,Allow
   Deny from All
   Allow from All
</Directory>

# This directory does not require access over HTTP - taken from the original
# phpMyAdmin upstream tarball
#
<Directory /usr/share/phpMyAdmin/libraries/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>
Now you can restart your apache "service httpd restart" #tested on Centos7 Google Cloud 1. Installing VestaCP
CODE: SELECT ALL
curl -O http://vestacp.com/pub/vst-install.sh

bash vst-install.sh --nginx yes --apache yes --phpfpm no --named yes --remi yes --vsftpd yes --proftpd no --iptables yes --fail2ban no --quota no --exim no --dovecot no --spamassassin no --clamav no --softaculous no --mysql yes --postgresql no

2. VestaCP installed with PHP 7.4.0 RC3, in this condition phpMyAdmin have a lot of errors
CODE: SELECT ALL
yum install yum-utils -y

yum-config-manager --disable remi-php5*
yum-config-manager --disable remi-php74
yum-config-manager --disable remi-test
yum-config-manager --enable remi-php73

yum remove php php-*

yum install php roundcube phpmyadmin -y

3. now after step 2, i successfully downgrade to PHP 7.3.10 and phpMyAdmin show no errors, but i can't access phpMyAdmin (forbidden 403)
CODE: SELECT ALL

#edit phpMyAdmin config
nano /etc/httpd/conf.d/phpMyAdmin.conf


#overwrite all with this

# phpMyAdmin - Web based MySQL browser written in php
#
# Allows only localhost by default
#
# But allowing phpMyAdmin to anyone other than localhost should be considered
# dangerous unless properly secured by SSL

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

<Directory /usr/share/phpMyAdmin/>
   Order Deny,Allow
   Deny from All
   Allow from All
</Directory>

<Directory /usr/share/phpMyAdmin/scripts/>
   Order Deny,Allow
   Deny from All
   Allow from All
</Directory>

# This directory does not require access over HTTP - taken from the original
# phpMyAdmin upstream tarball
#
<Directory /usr/share/phpMyAdmin/libraries/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

<Directory /usr/share/phpMyAdmin/setup/>
   <IfModule mod_authz_core.c>
     # Apache 2.4
     Require local
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

# These directories do not require access over HTTP - taken from the original
# phpMyAdmin upstream tarball
#
<Directory /usr/share/phpMyAdmin/libraries/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

<Directory /usr/share/phpMyAdmin/setup/lib/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

<Directory /usr/share/phpMyAdmin/setup/frames/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

# This configuration prevents mod_security at phpMyAdmin directories from
# filtering SQL etc.  This may break your mod_security implementation.
#
#<IfModule mod_security.c>
#    <Directory /usr/share/phpMyAdmin/>
#        SecRuleInheritance Off
#    </Directory>
#</IfModule>


4. after restart httpd service or reboot, all my problem is fixed :D  

Setup Yum Repository

First of all, you need to enable Remi and EPEL yum repositories on your system. Use the following command to install EPEL repository on your CentOS and Red Hat 7/6 systems Use this command to install EPEL yum repository on your system
sudo yum install epel-release
and now execute one of the following commands as per your operating system version to install the Remi repository.
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

Install PHP 7 on CentOS

Your system is prepared for the PHP installation from yum repositories. Use one of the following commands to install PHP 7.3 or PHP 7.2 or PHP 7.1 on your system based on your requirements.
## Install PHP 7.3 
yum --enablerepo=remi-php73 install php

## Install PHP 7.2 
yum --enablerepo=remi-php72 install php

## Install PHP 7.1 
yum --enablerepo=remi-php71 install php
I have installed the latest version PHP 7.3 on my system. Now running the following command to check the current active PHP version on my system.
php -v

PHP 7.3.0 (cli) (built: Dec  4 2018 16:12:20) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.0-dev, Copyright (c) 1998-2018 Zend Technologies

Install PHP Modules

You may also need to install additional PHP modules based on your application requirements. The below command will install some more useful PHP modules.
### For PHP 7.3
yum --enablerepo=remi-php73 install php-xml php-soap php-xmlrpc php-mbstring php-json php-gd php-mcrypt

### For PHP 7.2
yum --enablerepo=remi-php72 install php-xml php-soap php-xmlrpc php-mbstring php-json php-gd php-mcrypt

### For PHP 7.1
yum --enablerepo=remi-php71 install php-xml php-soap php-xmlrpc php-mbstring php-json php-gd php-mcrypt
You can run the following command to search other available PHP modules under configured yum repositories. Below example command search for all modules for PHP 7.3. yum --enablerepo=remi-php73 search php | grep php73
php73.x86_64 : Package that installs PHP 7.3
php73-php.x86_64 : PHP scripting language for creating dynamic web sites
php73-php-bcmath.x86_64 : A module for PHP applications for using the bcmath
php73-php-brotli.x86_64 : Brotli Extension for PHP
php73-php-cli.x86_64 : Command-line interface for PHP
php73-php-common.x86_64 : Common files for PHP
php73-php-componere.x86_64 : Composing PHP classes at runtime
php73-php-dba.x86_64 : A database abstraction layer module for PHP applications
php73-php-dbg.x86_64 : The interactive PHP debugger
php73-php-devel.x86_64 : Files needed for building PHP extensions
php73-php-embedded.x86_64 : PHP library for embedding in applications
php73-php-enchant.x86_64 : Enchant spelling extension for PHP applications
php73-php-fpm.x86_64 : PHP FastCGI Process Manager
php73-php-gd.x86_64 : A module for PHP applications for using the gd graphics
...
...