Advertisement
  1. Code
  2. PHP

Nâng cấp Server Linux của bạn lên PHP 7.0

Scroll to top
Read Time: 9 min

Vietnamese (Tiếng Việt) translation by Shu Wu (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating

Hình minh hoạ từ PONTIER

Giới thiệu

PHP 7 được phát hành vào cuối tháng mười hai. Một khi bạn đã kiểm thử code của bạn với nó tại máy cục bộ, thì đây là lúc để nâng cấp máy chủ thật sự của bạn. Nhìn chung, tôi thấy rằng hầu hết các trang web của tôi chạy tốt trên nó.

Tuy nhiên, tôi e là có nhiều trang web vẫn chưa được nâng cấp. Thường thì sẽ an toàn hơn và dễ dàng hơn nếu tiếp tục sử dụng các phiên bản cũ hơn. Trong thực tế, một cuộc khảo sát về các trang web WordPress cho thấy rằng có một số trang là đã nâng cấp:

"Theo như tháng năm 2016, 52,9% của các trang web WordPress chạy một phiên bản PHP cũ hơn 5.5. Chỉ 3,4% trang web WordPress chạy PHP 7, phiên bản hiện tại của PHP." thông qua PHP Compatibility Checker.

Nhưng PHP 7 đã gần một năm tuổi.

Trong bài học của ngày hôm nay, tôi sẽ hướng dẫn bạn đi qua các phương pháp tiếp cận được được khuyến khích của tôi để nâng cấp lên PHP 7 trên Ubuntu 14.x và giải quyết các vấn đề với PHPMyAdmin, điều mà rất nhiều người nâng cấp đã gặp phải.

Tại thời điểm này, nếu bạn đang sử dụng WordPress, cài đặt plugin PHP Compatibility Checker để đảm bảo rằng bạn sẽ không gặp bất kỳ vấn đề bất ngờ với các plugin của bạn.

Tôi luôn luôn đánh giá cao những ý tưởng và thông tin phản hồi của bạn. Nếu bạn có một câu hỏi hay một gợi ý, xin vui lòng để lại suy nghĩ của bạn trong phần bình luận dưới đây.

Bạn có thể liên hệ trực tiếp với tôi trên Twitter @reifman. Điều này đặc biệt đúng với các script nâng cấp phổ biến như cái này—nơi trải nghiệm của chính người dùng và đầu vào sẽ là duy nhất và có giá trị.

Nâng cấp máy chủ của bạn

Tôi cố gắng sử dụng một số hướng dẫn tiêu chuẩn để nâng cấp PHP 7 và gặp phải một loạt các vấn đề khác nhau. Vì vậy, các script mà tôi chia sẻ với các bạn dưới đây đã được thử nghiệm nhiều lần, và tôi tin rằng những gì tôi trình bày sẽ hoạt động tốt với bạn.

Một lần nữa, tôi đánh giá rất cao Digital Ocean giúp dễ dàng để sao lưu máy chủ của tôi và liên tục tạo ra các trường hợp thử nghiệm cho hoạt động thông qua các bước nâng cấp từ đầu.

Hãy bắt đầu nào.

Lưu ý bất kỳ tuỳ chỉnh nào đối với PHP 5

Tại thời điểm này, bạn có thể lưu ý đến tập tin tuỳ chỉnh PHP .ini của bạn và có thể sao lưu tập tin PHP .ini của bạn vì bạn sẽ cần phải di trú những điều này sang PHP 7 sau này.

Lệnh sau đây sẽ giúp bạn tìm thấy tập tin .ini của bạn:

1
$ php --ini

Việc này sẽ cho tôi những thứ sau:

1
$ php --ini
2
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20121212/newrelic.so' - /usr/lib/php5/20121212/newrelic.so: cannot open shared object file: No such file or directory in Unknown on line 0
3
Configuration File (php.ini) Path: /etc/php5/cli
4
Loaded Configuration File:         /etc/php5/cli/php.ini
5
Scan for additional .ini files in: /etc/php5/cli/conf.d
6
...

Đối với Apache, của tôi là ở trong /etc/php5/apache2.

Loại bỏ PHP5 và các gói liên quan

Trước tiên, chúng ta hãy dọn sạch tất cả gói PHP cũ của chúng ta. Tôi thấy rằng tốt nhất là làm điều này một cách triệt để, bao gồm không chỉ PHP5 mà còn 5.5 và 5.6, mà tôi đã thử nghiệm với chúng trên máy chủ của tôi.

1
$ sudo apt-get -y purge php php-common php-mcrypt php-mbstring
2
$ sudo apt-get -y purge php5 php5-common php5-cli libapache2-mod-php5 php5-curl php5-gd php5-imap php5-intl php5-json php5-mcrypt php5-mysql php5-pspell php5-readline php5-sqlite
3
$ sudo apt-get -y purge php5.5 php5.5-common php5.5-mcrypt php5.5-mbstring
4
$ sudo apt-get -y purge php5.6 php5.6-common
5
$ sudo apt-get autoremove

Khi tôi không dọn sạch tất cả các phiên bản khác nhau của PHP, tôi gặp các vấn đề sau đó cố gắng để cấu hình PHP 7. Nếu bạn có một cách tiếp cận đơn giản, hãy chia sẻ nó trong phần bình luận.

Thêm một gói lưu trữ riêng cho PHP7 và PHPMyAdmin

Upgrading to PHP7 PPA for PHP70 by Ondej SurUpgrading to PHP7 PPA for PHP70 by Ondej SurUpgrading to PHP7 PPA for PHP70 by Ondej Sur
1
$ sudo add-apt-repository ppa:ondrej/php
2
 Co-installable PHP versions: PHP 5.5, 5.6, PHP 7.0 and batteries included.
3
4
You can get more information about the packages at https://deb.sury.org
5
6
For PHP 5.4 on Ubuntu 12.04 use: ppa:ondrej/php5-oldstable
7
8
BUGS&FEATURES: This PPA now has a issue tracker: https://deb.sury.org/#bug-reporting
9
10
PLEASE READ: If you like my work and want to give me a little motivation, please consider donating regularly: https://donate.sury.org/
11
12
WARNING: add-apt-repository is broken with non-UTF-8 locales, see https://github.com/oerdnj/deb.sury.org/issues/56 for workaround:
13
14
# LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php

15
 More info: https://launchpad.net/~ondrej/+archive/ubuntu/php
16
Press [ENTER] to continue or ctrl-c to cancel adding it
17
18
gpg: keyring `/tmp/tmpj6czswxr/secring.gpg' created

19
gpg: keyring `/tmp/tmpj6czswxr/pubring.gpg' created
20
gpg: requesting key E5267A6C from hkp server keyserver.ubuntu.com
21
gpg: /tmp/tmpj6czswxr/trustdb.gpg: trustdb created
22
gpg: key E5267A6C: public key "Launchpad PPA for Ondřej Surý" imported
23
gpg: Total number processed: 1
24
gpg:               imported: 1  (RSA: 1)
25
OK

Và sau đó tôi cập nhật các gói và bản phân phối của tôi và làm sạch bất kỳ tập tin nào còn lại:

1
$ sudo apt-get update
2
$ sudo apt-get dist-upgrade
3
$ sudo apt-get autoremove

Có thể bạn sẽ thấy những lỗi như thế này:

1
The link /vmlinuz.old is a damaged link

2
Removing symbolic link vmlinuz.old 
3
 you may need to re-run your boot loader[grub]

Tôi đã lựa chọn khởi động lại vào thời điểm này, và điều đó dường như đã có tác dụng:

1
$ sudo reboot

Cài đặt PHP7

Tiếp theo, chúng ta cài đặt PHP7, và tất cả các gói của nó:

1
sudo apt-get install php7.0 php7.0-mysql libapache2-mod-php7.0 php-apcu php7.0-gd php7.0-mcrypt php-memcache php7.0-curl php7.0-tidy php-xml php-json php7.0-mbstring php-gettext libmcrypt-dev mcrypt php-gd libmcrypt4 libmhash2 libtidy5 libxslt1.1 php-apcu-bc php-pear php7.0-mbstring php7.0-xml

Tại thời điểm này bạn sẽ muốn di trú bất kỳ thiết lập đã thay dổi nào ở trong tập tin cấu hình của bạn sang tập tin /etc/php/7.0/apache2/php.ini.

Tôi cũng đã cần phải thêm extension=apc.so vào tập tin php.ini của tôi.

1
$ sudo nano /etc/php/7.0/apache2/php.ini

Tôi đã dán nó ở đây:

1
;extension=php_openssl.dll
2
;extension=php_pdo_firebird.dll
3
;extension=php_pdo_mysql.dll
4
;extension=php_pdo_oci.dll
5
;extension=php_pdo_odbc.dll
6
;extension=php_pdo_pgsql.dll
7
;extension=php_pdo_sqlite.dll
8
;extension=php_pgsql.dll
9
;extension=php_shmop.dll
10
extension=apc.so

Vô hiệu hoá PHPMyAdmin

Tại thời điểm này, nếu bạn đang chạy PHPMyAdmin, bạn sẽ gặp một số vấn đề về nạp lại Apache. Nếu như vậy, bạn sẽ cần phải vô hiệu hoá PHPMyAdmin:

1
$ sudo nano /etc/apache2/apache2.conf

Chuyển dòng code ở dưới cùng thành dòng chú thích:

1
# Include of directories ignores editors' and dpkg's backup files,

2
 # see README.Debian for details.

3
4
 # Include generic snippets of statements

5
 IncludeOptional conf-enabled/*.conf
6
7
 # Include the virtual host configurations:

8
 IncludeOptional sites-enabled/*.conf
9
10
 # vim: syntax=apache ts=4 sw=4 sts=4 sr noet

11
 # Include /etc/phpmyadmin/apache.conf

Sau đó, tôi kích hoạthoạt mcryptmbstring và sau đó khởi động lại Apache:

1
$ sudo phpenmod mcrypt
2
$ sudo phpenmod mbstring
3
$ sudo service apache2 restart

Tôi thử nghiệm trên một máy chủ chạy ứng dụng được xây dựng chỉ bằng HTML, PHP và Yii1.x, và tất cả chúng đều hoạt động.

Cài đặt lại PHPMyAdmin

Tiếp theo, hãy sửa lại cài đặt của PHPMyAdmin. Rất nhiều người phải vật lộn với điều này.

Đầu tiên, tôi thêm vào kho chứa gói bằng nijel:

1
$ sudo add-apt-repository ppa:nijel/phpmyadmin
2
 Latest phpMyAdmin packages - https://www.phpmyadmin.net/. Based on packages available in Debian.
3
4
There are some notable changes:
5
6
* it currently requires updated PHP packages, you can get packages from https://launchpad.net/~ondrej/+archive/ubuntu/php/
7
* it does include embedded copies of PHP libraries
8
9
If you like phpMyAdmin, you can support it's further development at https://www.phpmyadmin.net/donate/ or https://www.phpmyadmin.net/sponsors/, thanks!

10
 More info: https://launchpad.net/~nijel/+archive/ubuntu/phpmyadmin

11
Press [ENTER] to continue or ctrl-c to cancel adding it

12


13
gpg: keyring `/tmp/tmp6zix40vr/secring.gpg' created
14
gpg: keyring `/tmp/tmp6zix40vr/pubring.gpg' created

15
gpg: requesting key 06ED541C from hkp server keyserver.ubuntu.com

16
gpg: /tmp/tmp6zix40vr/trustdb.gpg: trustdb created

17
gpg: key 06ED541C: public key "Launchpad PPA for Michal Čihař" imported

18
gpg: no ultimately trusted keys found

19
gpg: Total number processed: 1

20
gpg:               imported: 1  (RSA: 1)

21
OK

Sau đó, tôi cập nhật các gói và cài đặt PHPMyAdmin:

1
$ sudo apt-get update
2
$ sudo apt-get install phpmyadmin

Lưu ý, điều này vẫn sẽ tải lại một đống các gói PHP 5.x cũ hơn, nhưng cuối cùng PHPMyAdmin sẽ hoạt động.

Sau đó, tôi chuyển dòng code PHPMyAdmin mà tôi đã chuyển thành dòng thú thích trước đó về dòng code bình thường.

1
$ sudo nano /etc/apache2/apache2.conf

Ở đây:

1
# Include of directories ignores editors' and dpkg's backup files,

2
 # see README.Debian for details.

3
4
 # Include generic snippets of statements

5
 IncludeOptional conf-enabled/*.conf
6
7
 # Include the virtual host configurations:

8
 IncludeOptional sites-enabled/*.conf
9
10
 # vim: syntax=apache ts=4 sw=4 sts=4 sr noet

11
 Include /etc/phpmyadmin/apache.conf

Và khởi động lại Apache:

1
$ sudo service apache2 restart

Bảo mật cài đặt PHPMyAdmin của bạn

Cài đặt này của PHPMyAdmin quay trở lại vào vị trí mặc định của nó, điều đó là rất không an toàn và có thể hack được. Xin vui lòng làm theo hướng dẫn Cài đặt và sử dụng PHPMyAdmin với WordPress để bảo mật tốt hơn cài đặt của bạn.

Kiểm tra PHP 7 đã chạy hay chưa

Sau đó, tôi xây dựng một tập tin phpinfo() nhỏ; tập tin để kiểm tra PHP 7 đã hoạt động hay chưa:

Upgrading to PHP 7 phpinfo outputUpgrading to PHP 7 phpinfo outputUpgrading to PHP 7 phpinfo output

Phần cuối

Nâng cấp lên PHP 7 trên Ubuntu 14.x của tôi đã gặp vấn đề và yêu cầu rất nhiều thay đổi từ các script đã được đưa ra để hoàn tất việc nâng cấp. Tôi hy vọng bạn thấy hướng dẫn hôm nay thật sự hữu ích.

Nếu bạn thích điều này, xin hãy theo dõi các hướng dẫn sắp tới trong loạt bài Lập trình với Yii2Xây dựng Startup của bạn với PHP, cung cấp tư liệu về tiến trình xây dựng startup của tôi, Meeting Planner.

Bạn còn có thể theo dõi tôi @reifman trên Twitter hoặc xem qua trang giảng viên của tôi để cập nhật.

Các liên kết có liên quan

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.