Ubuntu: Как установить PHP 7.4 в Ubuntu 19.04/18.04/16.04
Завтра, 28 ноября, планируется релиз PHP 7.4 поэтому сегодня я расскажу как установить данную версию PHP в Ubuntu 19.04/18.04/16.04 ..
Шаг 1. Добавление PPA репозитория
Добавляем всем известный репозиторий ppa:ondrej/php который содержит все актуальные версии PHP
1 2 3 4 5 6 |
sudo apt-get update sudo apt -y install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt-get update |
Шаг 2. Установка PHP 7.4 в Ubuntu 19.04/18.04/16.04
Установка PHP 7.4 в Ubuntu 19.04/18.04/16.04 выполняется командой
1 2 3 |
sudo apt -y install php7.4 |
Проверяем установленную версию
1 2 3 4 5 6 7 8 |
$ php -v PHP 7.4.0RC6 (cli) (built: Nov 19 2019 18:13:12) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0-dev, Copyright (c) Zend Technologies with Zend OPcache v7.4.0RC6, Copyright (c), by Zend Technologies |
Шаг 3. Установка модулей PHP 7.4 в Ubuntu 19.04/18.04/16.04
Для поиска доступных модулей PHP7.4 выполняем
1 2 3 |
apt-cache search php7.4 |
получим список доступных для установки пакетов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
php-amqp - AMQP extension for PHP php-apcu - APC User Cache for PHP php-gearman - PHP wrapper to libgearman php-geoip - GeoIP module for PHP php-gmagick - Provides a wrapper to the GraphicsMagick library php-gnupg - PHP wrapper around the gpgme library php-imagick - Provides a wrapper to the ImageMagick library php-memcache - memcache extension module for PHP php-mongodb - MongoDB driver for PHP php-oauth - OAuth 1.0 consumer and provider extension php-pinba - Pinba module for PHP php-propro - propro module for PHP php-radius - radius client library for PHP php-raphf - raphf module for PHP php-rrd - PHP bindings to rrd tool system php-smbclient - PHP wrapper for libsmbclient php-solr - PHP extension for communicating with Apache Solr server php-ssh2 - Bindings for the libssh2 library php-stomp - Streaming Text Oriented Messaging Protocol (STOMP) client module for PHP php-tideways - Tideways PHP Profiler Extension php-uploadprogress - file upload progress tracking extension for PHP php-uuid - PHP UUID extension php-yac - YAC (Yet Another Cache) for PHP php-yaml - YAML-1.1 parser and emitter for PHP php-zmq - ZeroMQ messaging bindings for PHP libapache2-mod-php7.4 - server-side, HTML-embedded scripting language (Apache 2 module) libphp7.4-embed - HTML-embedded scripting language (Embedded SAPI library) php-lua - PHP Embedded lua interpreter php-pcov - Code coverage driver php-xdebug - Xdebug Module for PHP php7.4 - server-side, HTML-embedded scripting language (metapackage) php7.4-bcmath - Bcmath module for PHP php7.4-bz2 - bzip2 module for PHP php7.4-cgi - server-side, HTML-embedded scripting language (CGI binary) php7.4-cli - command-line interpreter for the PHP scripting language php7.4-common - documentation, examples and common module for PHP php7.4-curl - CURL module for PHP php7.4-dba - DBA module for PHP php7.4-dev - Files for PHP7.4 module development php7.4-enchant - Enchant module for PHP php7.4-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary) php7.4-gd - GD module for PHP php7.4-gmp - GMP module for PHP php7.4-imap - IMAP module for PHP php7.4-interbase - Interbase module for PHP php7.4-intl - Internationalisation module for PHP php7.4-json - JSON module for PHP php7.4-ldap - LDAP module for PHP php7.4-mbstring - MBSTRING module for PHP php7.4-mysql - MySQL module for PHP php7.4-odbc - ODBC module for PHP php7.4-opcache - Zend OpCache module for PHP php7.4-pgsql - PostgreSQL module for PHP php7.4-phpdbg - server-side, HTML-embedded scripting language (PHPDBG binary) php7.4-pspell - pspell module for PHP php7.4-readline - readline module for PHP php7.4-snmp - SNMP module for PHP php7.4-soap - SOAP module for PHP php7.4-sqlite3 - SQLite3 module for PHP php7.4-sybase - Sybase module for PHP php7.4-tidy - tidy module for PHP php7.4-xml - DOM, SimpleXML, XML, and XSL module for PHP php7.4-xmlrpc - XMLRPC-EPI module for PHP php7.4-xsl - XSL module for PHP (dummy) php7.4-zip - Zip module for PHP |
устанавливаем нужные, в моем случае это
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
apt-get install php7.4 \ php7.4-bcmath \ php7.4-bz2 \ php7.4-cli \ php7.4-common \ php7.4-curl \ php7.4-fpm \ php7.4-gd \ php7.4-imap \ php7.4-intl \ php7.4-json \ php7.4-mbstring \ php7.4-mysql \ php7.4-opcache \ php7.4-pgsql \ php7.4-readline \ php7.4-sqlite3 \ php7.4-tidy \ php7.4-xml \ php7.4-zip \ php-amqp \ php-apcu \ php-geoip \ php-imagick \ php-memcache \ php-mongodb \ php-oauth \ php-smbclient \ php-solr \ php-ssh2 \ php-uploadprogress \ php-uuid \ php-yaml \ php-xdebug |
Если нужен php-gearman, тогда инсталим его так
1 2 3 4 |
sudo add-apt-repository ppa:ondrej/pkg-gearman -y sudo apt-get install php-gearman |
Шаг 4. Подключение PHP 7.4 к Nginx в Ubuntu 19.04/18.04/16.04
Проверяем, что php-fpm запущен
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
systemctl status php7.4-fpm ● php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2019-11-27 10:03:11 CET; 19min ago Docs: man:php-fpm7.4(8) Main PID: 3522 (php-fpm7.4) Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec" Tasks: 3 (limit: 2299) CGroup: /system.slice/php7.4-fpm.service ├─3522 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf) ├─3538 php-fpm: pool www └─3541 php-fpm: pool www Nov 27 10:03:11 c2hz systemd[1]: Starting The PHP 7.4 FastCGI Process Manager... Nov 27 10:03:11 c2hz systemd[1]: Started The PHP 7.4 FastCGI Process Manager. |
Если не запущен, запускаем
1 2 3 |
systemctl start php7.4-fpm |
при необходимости, добавляем в авто загрузку
1 2 3 4 |
systemctl is-enabled php7.4-fpm systemctl enable php7.4-fpm |
Устанавливаем nginx, если не сделали это ранее
1 2 3 |
sudo apt-get install nginx |
Создаем файл конфигурации нашего домена с таким содержимым (тут и далее mydomain.tld, надо заменить на имя вашего домена)
1 2 3 4 5 |
sudo touch /etc/nginx/sites-available/mydomain.tld.conf sudo ln -s /etc/nginx/sites-available/mydomain.tld.conf /etc/nginx/sites-enabled/mydomain.tld.conf sudo nano /etc/nginx/sites-available/mydomain.tld.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
server { listen 80; server_name mydomain.tld; root /var/www/mydomain.tld; error_log /var/logs/nginx/error-mydomain.tld.log; location / { index index.php; try_files $uri $uri/ /index.php?$args; } location ~ .php$ { include fastcgi.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } |
тут мы используем сокет /run/php/php7.4-fpm.sock, который указан в конфигруации пулов PHP, в этом файле: /etc/php/7.4/fpm/pool.d/www.conf
1 2 3 4 |
; The address on which to accept FastCGI requests. listen = /run/php/php7.4-fpm.sock |
Создаем директорию сайта и помещаем туда файл php
1 2 3 4 5 |
sudo mkdir -p /var/www/mydomain.tld sudo printf "<?php\nphpinfo();" > /var/www/mydomain.tld/index.php; sudo chown -R www-data:www-data /var/www/mydomain.tld |
Проверяем конфигурацию nginx
1 2 3 |
sudo nginx -t |
и если все ок, перезапускаем его
1 2 3 |
sudo nginx -s reload |
Можно проверять настройки, перейдя по имени домена в барузере.
Шаг 5. Пример скрипта для теста PHP7.4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php print_r(array_map(fn($x) => $x+1, [0,0,0,0])); try { (string) new class { public function __toString(){ throw new \Exception('Something went wrong'); } }; } catch (\Throwable $t) { echo 'Error: '.$t->getMessage().PHP_EOL; } |
запускаем и видим в действии стрелочные функции и exception-ы из __toString
1 2 3 4 5 6 7 8 9 10 11 12 |
php test-php7.4.php Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 1 ) Error: Something went wrong |
Заключение
Как видите, переход к использованию PHP 7.4 не такой уж и страшный и не займет много времени.
Author: | Tags: /
| Rating:
1 comment.
Write a comment