Nếu bạn đang sử dụng HocVPS Script và muốn trải nghiệm sự mạnh mẽ của PHP 7 mới ra mắt, hãy thực hiện từng bước theo bài này để nâng cấp phiên bản PHP hiện tại lên phiên bản mới nhất nhé.

PHP 7

Trong bài viết này mình sẽ nâng cấp PHP 5.6 lên PHP 7.0.

Đầu tiên bạn hãy tải về công cụ quản lý cấu hình yum:

yum install yum-utils

Cài đặt phiên bản mới nhất của remi repository

# CentOS 6
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

# CentOS 7
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

Kích hoạt remi repository cho phiên bản PHP 7.0 hay PHP 7.1 bạn muốn cài

# PHP 7.0
yum-config-manager --enable remi-php70

# PHP 7.1
yum-config-manager --enable remi-php71

Tiếp theo kiểm tra phiên bản PHP bạn đang sử dụng với lệnh php -v. Tắt php repository tương ứng này đi vì chúng ta sử dụng PHP 7 rồi.

# PHP 5.6
yum-config-manager --disable remi-php56

# PHP 5.5
yum-config-manager --disable remi-php55

Kiểm tra lại danh sách repository một lần nữa, đảm bảo phần remi tương tự như sau là được:

yum repolist all

Danh sach repo

Cuối cùng update PHP lên phiên bản mới nhất 7.0

yum update

Vậy là xong rồi đấy, kiểm tra lại phiên bản PHP với lệnh php -v bạn sẽ thấy output tương tự như sau:

PHP 7.0.5 (cli) (built: Apr 8 2016 17:53:24) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
 with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

Chúc các bạn thành công.

Comment của bạn

Your email address will not be published. Required fields are marked *

88 Comments

  1. Tony 4 comment

    thay đổi giá trị max_input_vars ở chỗ nào vậy ban, hướng dẫn mình với, mình đang xài hocvps

      1. Tony 4 comment

        quá nhanh quá nguy hiểm, thanks bạn. mình sửa rồi nhưng sao vẫn bị cái lỗi post sản phẩm lên woocommerce mà có nhiều variation thì nó treo. Theo hướng dẫn ở đây Woo nó khuyên thay đổi max input vars lên 2000 mình nâng lên 5000 luôn cũng vẫn bị. Có cách nào giúp mình không bạn?

        1. Việt Phương Moderator

          Bạn sửa xong thì phải restart PHP-FPM và Nginx nhé. Còn vấn đề với Woo trên thì mình không rõ rồi

  2. Thuan 1 comment

    Ad ơi cho mình hỏi là , sau khi mình nâng cấp sever lên thì bị tình trạng lỗi phân quyền, mặc dù sử dụng chức năng phân quyền lại của hocvps nhưng vẫn không có tác dụng, user ngnix không có tác dụng, mà bị đổi thành user apache. Vấn đề được giải quyết khi mình dùng lệnh sudo chown apache:apache -R / . Ad cho mình hỏi có cách nào để chuyển user apache thành user nginx như cũ được không, vì mỗi lần thêm tên miền mới lại phải chown apache mới sử dụng được

    1. Việt Phương Moderator

      1. Bạn dùng HocVPS?
      2. Bạn nâng cấp PHP theo bài viết này?
      Nếu vậy thì user apache đâu có dùng được vào Nginx vì HocVPS chạy Nginx mà?

  3. Tung 2 comment

    Lỗi này khắc phục sao vậy bạn ơi, mình nghe nói Suhosin k support PHP7 nữa thì phải.
    “PHP Warning: PHP Startup: Unable to load dynamic library ‘suhosin.so’ (tried: /usr/lib64/php/modules/suhosin.so (/usr/lib64/php/modules/suhosin.so: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/suhosin.so.so (/usr/lib64/php/modules/suhosin.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
    PHP 7.2.9 (cli) (built: Aug 15 2018 09:35:47) ( NTS )
    Copyright (c) 1997-2018 The PHP Group
    Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

    1. Việt Phương Moderator

      Bạn nâng cấp PHP 7.2 thì không tương thích rồi. Hiện tại HocVPS cũng có hỗ trợ 7.2 đâu và trong các module mặc định cũng k có suhosin. Bạn remove suhosin đi rồi cài lại thủ công(nếu cần)
      Cho mình kết quả của ls -al /usr/lib64/php/modules/

    1. Việt Phương Moderator

      Bạn không cần thực hiện bước ý vì HocVPS đã cài remi repo rồi. Kiểm tra bằng yum repolist

    2. Phương 3 comment

      Mình làm theo cách sau:
      sudo yum install pygpgme yum-utils
      Tạo file /etc/yum.repos.d/varnishcache_varnish41.repo với nội dung sau:

      [varnishcache_varnish41]
      name=varnishcache_varnish41
      baseurl=https://packagecloud.io/varnishcache/varnish41/el/6/$basearch
      repo_gpgcheck=1
      gpgcheck=0
      enabled=1
      gpgkey=https://packagecloud.io/varnishcache/varnish41/gpgkey
      sslverify=1
      sslcacert=/etc/pki/tls/certs/ca-bundle.crt
      metadata_expire=300

      [varnishcache_varnish41-source]
      name=varnishcache_varnish41-source
      baseurl=https://packagecloud.io/varnishcache/varnish41/el/6/SRPMS
      repo_gpgcheck=1
      gpgcheck=0
      enabled=1
      gpgkey=https://packagecloud.io/varnishcache/varnish41/gpgkey
      sslverify=1
      sslcacert=/etc/pki/tls/certs/ca-bundle.crt
      metadata_expire=300

      Sau đó update yum cache bằng lệnh

      sudo yum -q makecache -y –disablerepo=’*’ –enablerepo=’varnishcache_varnish41′

      Cài varnish:
      yum install epel-release
      yum install varnish

  4. Phương 3 comment

    Mình muốn downgrade từ PHP 7.0 xuống 5.6 thì làm như thế nào hả các bạn? Có một số plugin không làm việc với PHP 7.0

  5. Minh Thanh 47 comment

    Mình lỡ cài php 7.2 rồi nhưng do 1 số theme chưa hỗ trợ, giờ muốn hạ xuống 7.1 thì dùng lệnh sao vậy ad!

    1. Việt Phương Moderator

      Bạn backup site trước đó nhé. Khuyến khích bạn cài lại VPS hơn là downgrade như thế này. Bạn cần disable remi php7.2 rồi gỡ php cùng toàn bộ các package liên quan xong cài php7.1.
      Các package php liên quan thì tùy hệ thống bạn lúc cài, có thể khác với những package mình liệt kê
      # yum-config-manager --disable remi-php72
      # yum remove php-fpm php-common php-gd php-mysql php-pdo php-xml php-mbstring php-mcrypt php-curl php-opcache php-cli php-pecl-zip php-mysqlnd
      # yum-config-manager --enable remi-php71
      # yum install php-fpm php-common php-gd php-mysql php-pdo php-xml php-mbstring php-mcrypt php-curl php-opcache php-cli php-pecl-zip php-mysqlnd

      Kiểm tra php.ini nếu vẫn giữ nguyên của cấu hình PHP7.2 trước và hệ thống tạo file php.ini.rpmsave cho cấu hình 7.1 (check ngày giờ file) thì:
      mv /etc/php.ini /etc/php.ini.bk
      mv /etc/php.ini.rpmsave /etc/php.ini

      Rồi khởi động lại service php-fpm restart

      1. Việt 4 comment

        Mình có sử dụng cách này những vẫn KO thể nào trở về bản cũ được bạn ạ. Kiểm tra php -v ko ra gì cả. Bạn giúp mình với.

        1. Việt Phương Moderator

          Vậy php -V bạn ra kết quả gì? Trường hợp xấu nhất bạn cài lại VPS và restore lại website nhé. Bạn gửi website qua support@hocvps.com mình xem cho

          1. Việt 4 comment

            Nếu chỉ dùng PUTTY thì có cài lại VPS được không bạn nhỉ?

          2. Việt Phương Moderator

            Không bạn à. Putty chỉ là trình đăng nhập SSH. Reinstall VPS hầu hết thiết lập từ giao diện của nhà cung cấp VPS
            Ở đó bạn có thể restart/stop/reinstall/destroy VPS

  6. sinhle 44 comment

    mình đang bị lỗi 500 khu dùng Sypex Dumper để backup và khôi phục data
    ERROR: unable to bind listening socket for address ‘127.0.0.1:9000’: Address already in use (98)
    ERROR: FPM initialization failed

    Mong giúp đỡ

  7. Tuan 33 comment

    Minh cần giúp đỡ gấp mình cài hocvps và cài php 7.1 giờ mình muốn chuyển xuống php 5.6 thì phải làm như thế nào chỉ mình với mình cần gấp quá… cảm ơn nhiều

  8. Luong Nguyen 5 comment

    Mình mới dùng VPS. Cho mình hỏi cứ để website hoạt động rồi thực hiện nâng cấp có được không?

  9. Le Petit 1 comment

    Dear Ad
    Minh chạy lenh php – v thì báo lỗi này
    PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib64/php/module s/suhosin.so’ – /usr/lib64/php/modules/suhosin.so: undefined symbol: zend_hash_d el_key_or_index in Unknown on line 0

    Newbie nên rất mong hướng dẫn

    1. Việt Phương Moderator

      Module gốc suhosin.so có vấn đề trong quá trình nâng cấp. Bạn kiểm tra lại php.ini với thư mục module

  10. Hải 21 comment

    sau khi lên php 7 thì bị lỗi: Call to undefined function mysql_connect()
    lên mấy diễn đàn thì đọc thấy có đoạn: PHP 7 doesn’t have PHP’s mysql extension, which provided the mysql_*() functions. Any code calling those functions will need to be updated to use mysqli or PDO instead.
    Nhưng chưa biết cài thêm module nào ?

    1. Việt Phương Moderator

      Hàm mysql_connect lên PHP7 dùng mysqli_connect, ví dụ mysqli_connect('localhost', 'username', 'password', 'database');. Bạn cần cập nhật thư viện mysqli và pdo.
      Chủ yếu code của bạn vẫn dùng mysql_connect và cần sửa trong code

  11. Huynh Minh Chi 10 comment

    kiểm tra php-fpm log là kiểm tra sao ah ?
    function A từ 5.6 lên 7. đổi tên thành fuction B –> là sao em ko hiểu lắm. nói rõ hơn tý đc ko ah ? thanks anh !

  12. Huynh Minh Chi 10 comment

    Ad giúp em với, hiện tại em xài theme detube, PHP5.6 chạy bình thường nhưng nâng lên php7 là lỗi trắng trang, giờ phải làm sao để chỉnh sửa lại theme ?

    1. Việt Phương Moderator

      Lỗi trắng trang có thể là 500 Error. Bạn kiểm tra php-fpm log để xem vì sao. Thường có thể do function A từ 5.6 lên 7. đổi tên thành fuction B

        1. Việt Phương Moderator

          php-fpm log giúp bạn biết lỗi ở hàm PHP nào. Còn sửa thì bạn tự sửa thôi. Cũng như tham khảo thêm về lỗi code ý . Thường do hàm không tương thích từ PHP 5x lên PHP 7. Còn nếu bạn không biết cách sửa PHP cả theme thì downgrade về PHP 5.6

          1. Việt Phương Moderator

            Bạn backup site trước đó nhé, do việc hạ PHP có thể xung đột với cấu hình trc đó. Về cơ bản là gỡ toàn bộ PHP cũ, bao gồm cả các package đi kèm và cài PHP mới cùng các package đi kèm. Danh sách các package tùy vào hệ thống của bạn
            # yum-config-manager --disable remi-php71
            # yum remove php-fpm php-common php-gd php-mysql php-pdo php-xml php-mbstring php-mcrypt php-curl php-opcache php-cli php-pecl-zip php-mysqlnd
            # yum-config-manager --enable remi-php56
            # yum install php-fpm php-common php-gd php-mysql php-pdo php-xml php-mbstring php-mcrypt php-curl php-opcache php-cli php-pecl-zip php-mysqlnd

            Kiểm tra php.ini nếu vẫn giữ nguyên của cấu hình PHP7.1 trước và hệ thống tạo file php.ini.rpmsave cho cấu hình 5.6 (check ngày giờ file) thì:

            mv /etc/php.ini /etc/php.ini.bk
            mv /etc/php.ini.rpmsave /etc/php.ini

            Rồi khởi động lại service php-fpm restart

    1. Việt Phương Moderator

      Cho mình nội dung file /etc/php.ini. Gửi qua http://pastebin.com/ cho gọn.
      Vấn đề do các Extension cũ tiếp tục load ở PHP7 tuy vậy cấu hình library thay đổi nên không thể load

  13. BIGBOSS 3 comment

    Mình đã chạy lệnh đấy rồi và nó hiện lên : Package zip-3.0-11.el7.x86_64 already installed and latest version
    Nothing to do
    Nhưng thao tác file zip nó hiện lên thế này: “ZipArchive is not installed on your server, but is required if you need to import demo content.” nó vẫn báo là chưa cài đặt

  14. BIGBOSS 3 comment

    Nó báo cái này : “ZipArchive is not installed on your server” . Giờ sao cài zip trên centos

  15. van minh 42 comment

    Hi mod,

    Mình đang sử dụng vps chạy php 7, khi mình cài plugin wp user frontend pro thì vào bị lỗi:
    “Fatal error: Uncaught Error: Access to undeclared static property: WPUF_Admin_Template_Post::$input_field in …..”

    Không biết có cách nào để xử lý lỗi trên không? hiện tại mình không thể edit form của mình trong wp user frontend pro được.

    1. Việt Phương Moderator

      Lỗi này bên WP, mình cũng không rõ lắm về plugin này. Bạn tham khảo bên WP xem,
      Hình như do sự không khai báo của PHP 7.0 khác nên plugin không tương thích

      1. van minh 42 comment

        Cảm ơn bác, mình đọc một số nơi nói là do opcache, cũng không biết phải sao nữa.

  16. Ios Sword 2 comment

    Mình làm đến bước cuối thì bị lỗi này:
    Error: Package: varnish-4.1.4-1.el7.x86_64 (varnish-4.1)
    Requires: libc.so.6(GLIBC_2.14)(64bit)
    Error: Package: varnish-4.1.4-1.el7.x86_64 (varnish-4.1)
    Requires: libpcre.so.1()(64bit)
    Error: Package: varnish-4.1.4-1.el7.x86_64 (varnish-4.1)
    Requires: systemd-units
    Error: Package: varnish-4.1.4-1.el7.x86_64 (varnish-4.1)
    Requires: libc.so.6(GLIBC_2.15)(64bit)
    Error: Package: varnish-4.1.4-1.el7.x86_64 (varnish-4.1)
    Requires: systemd-sysv
    You could try using –skip-broken to work around the problem
    ** Found 4 pre-existing rpmdb problem(s), ‘yum check’ output follows:
    varnish-4.0.4-1.el6.x86_64 has installed conflicts varnish-libs: varnish-4.0.4-1.el6.x86_64
    varnish-4.0.4-1.el6.x86_64 has installed conflicts varnish-docs: varnish-4.0.4-1.el6.x86_64
    varnish-4.0.4-1.el6.x86_64 has installed conflicts varnish-debuginfo: varnish-4.0.4-1.el6.x86_64
    varnish-release-4.1-2.el7.noarch is a duplicate with varnish-release-4.0-3.el6.noarch

    1. Luân Trần Admin

      Bạn chạy yum clean all rồi thử lại coi được ko. Do conflict repo ấy mà.

  17. Tuấn Jujube 6 comment

    Em nâng PHP từ 5.6.27 lên 5.6.28, MariaDB từ 5.5.52 lên 5.5.53 cuối cùng bị lỗi khi vào một số website và không vào được phpadmin

    phpMyAdmin – Error
    Error during session start; please check your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.

    session_start(): open(/var/lib/php/session/sess_2hlqtb2v0a38onv3c29jokf2jnt2gtpr, O_RDWR) failed: Permission denied (13)

  18. Sơn 6 comment

    Mình cài đặt hocvps script 1.7 thì không thấy lựa chọn PHP 7. Cài đặt theo hướng dẫn của bài thì sau khi cài đặt thành công, gõ php -v có báo PHP 7.0. Nhưng vào phpmyadmin thì báo lỗi

    “Error during session start; please check your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.

    session_start(): open(/var/lib/php/session/sess_n7gi6shnqc03e4fbl3j4qdtj1v183dkv, O_RDWR) failed: Permission denied (13)”

    Luân xem giúp mình nhé

    1. Việt Phương Moderator

      Theo mình tìm hiểu thì vấn đề nằm ở quyền truy cập của file và folder hoặc là cache
      Bước 1: Xóa hết cookies, cache truy cập của browser. Nếu không muốn xóa, bạn có thể tạo user browser mới để thử login PhpMyAdmin
      Bước 2: Nếu bước 1 không thành công. Kiểm tra quyền truy cập thư mục PHP session ls -al /var/lib/php, đảm bảo bạn có full quyền ghi đọc drwxrwxrwx
      Nếu chưa có, bạn cần set toàn quyền đọc/ghi cho thư mục PHP session chmod -R 777 /var/lib/php/session/
      Chú ý: thư mục PHP session có thể ở các vị trí khác nhau tùy vào server. Kiểm tra php.ini để biết vị trí folder ở dòng session.save_path

  19. Hoang Lâm 3 comment

    Luân ơi, Cho mình hỏi VPS có dữ liệu đang chạy rồi thì có nâng cấp lên được không? hay chỉ VPS mới, chưa có dữ liệu gì

    1. Luân Trần Admin

      Nâng cấp PHP tương tự như bạn cập nhật 1 phần mềm trên Windows vậy, đang chạy ok

  20. Minh ad 1 comment

    Minh up lên php7 thì joomla của mình chạy có lỗi này. Rất mong được hướng dẫn
    Warning: session_start(): open(/var/lib/php/session/sess_cu7lplcbdgj7tfhp1q6m5s5t12, O_RDWR) failed: Permission denied (13) in /home/domain.com/public_html/libraries/joomla/session/handler/native.php on line 258

  21. Minh Thanh 47 comment

    da nang cap thanh cong nhung vao phpmyadmin thi lai bi loi?
    Fatal error: Uncaught Error: Call to undefined function __() in /home/domain.vn/private_html/phpmyadmin/libraries/sanitizing.lib.php:135

    1. Luân Trần Admin

      Khả năng phiên bản phpMyAdmin hiện tại không hỗ trợ PHP 7.0 rồi. Bạn update phiên bản mới của phpMyAdmin bằng cách up code lên thư mục /home/domain.vn/private_html/phpmyadmin/ nhé.

  22. 2ndCapricorn 1 comment

    Mình cài hocvps phiên bản mới nhất có php 7 nhưng hình như không hỗ trợ PHP ZipArchive. Dùng plugin duplicator của WordPress toàn báo lỗi

  23. Kiên Nguyễn Blog 19 comment

    Mình chạy lệnh yum-config-manager --enable remi-php70 nó báo lỗi

    ” -bash: yum-config-manager: command not found ”

    mặc dù các bước trên đã cài đặt thành công, tại sao nhỉ, Luân giúp mình với

      1. Kiên Nguyễn Blog 19 comment

        Mình chạy lệnh đó rồi, và không phát hiện ra lỗi gì cả. chạy thành công 2 lệnh đầu tiên xong đến lệnh đó thì bị lỗi, ko biết nguyên nhân gì nữa

    1. Luân Trần Admin

      Tùy hàm bạn dùng nhé, một số hàm lên PHP 7.0 bị bỏ đi (deprecated) nên có thể code cũ không chạy được.

  24. Văn Tiến 8 comment

    Nâng cấp lên và chạy rất tốt với magento. Bác nào dùng magento nhớ chỉnh sửa tí nhé.

    Mở file: app/code/core/Mage/Core/Model/Layout.php

    tìm: $out .= $this->getBlock($callback[0])->$callback[1]();
    Thay bằng: $out .= $this->getBlock($callback[0])->{$callback[1]}();

    Nếu vẫn chưa được thì tạo các thư mục theo đường dẫn sau:
    app/code/local/Mage/Core/Model/
    rồi copy file Layout.php sang nhé

    1. Minh Thanh 47 comment

      Mình định cài magento 2.1 trên script này vẫn chưa được, bạn có thể hướng dẫn mình không ?

  25. Luân Trần Admin

    Để chuyển trở lại từ PHP 7.0 về PHP 5.6, các bạn hãy gỡ PHP ra và cài lại bản 5.6. Copy và paste đoạn code bên dưới là được nhé:

    yum-config-manager --disable remi-php70
    yum-config-manager --enable remi-php56
    yum remove php-fpm php-common php-gd php-mysql php-pdo php-xml php-mbstring php-mcrypt php-curl php-opcache php-cli
    yum install php-fpm php-common php-gd php-mysql php-pdo php-xml php-mbstring php-mcrypt php-curl php-opcache php-cli
    mv /etc/php.ini /etc/php.ini.bk
    mv /etc/php.ini.rpmsave /etc/php.ini
    service php-fpm restart
    1. Trung Huỳnh 4 comment

      Dùng đoạn này để về php 5.6 xong không sử dụng hocvps script để phân quyền được

    2. Hanh Phan 12 comment

      Bạn ơi, hiện tại version PHP mình là 7.1.5.
      Sau khi mình paste đoạn code trên, mình kiểm tra version PHP lại là 7.1.6.
      Bạn hướng dẫn giúp mình hạ về PHP 5.6 hoặc 7.0 với.
      Cám ơn bạn nhé.

      1. Việt Phương Moderator

        Code trên cho PHP7.0 mà. Về cơ bản VPS đang dùng PHP nào thì bạn disable remi của PHP đó rồi gỡ toàn bộ package liên quan
        Sau đó bạn enable remi PHP muốn cài rồi cài lại toàn bộ package liên quan

  26. Đạo Nguyễn 34 comment

    Khi yum repolist all thì đã tắt được 2 cái 5.5 và 5.6 và bật remi-php70
    Nhưng cuối cùng vẫn ra:
    PHP 5.6.20 (cli) (built: Mar 31 2016 07:24:47)
    Copyright (c) 1997-2016 The PHP Group
    Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with XCache v3.2.0, Copyright (c) 2005-2014, by mOo
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
    with XCache Optimizer v3.2.0, Copyright (c) 2005-2014, by mOo
    with XCache Cacher v3.2.0, Copyright (c) 2005-2014, by mOo
    with XCache Coverager v3.2.0, Copyright (c) 2005-2014, by mOo

  27. lộc 2 comment

    Mình là người xem bài đầu tiên 1views – haha, tối về tets ngay cho con nginx chạy wordpress xem lỗi ko