Kako namestiti PHP 7 za Apache ali Nginx na Ubuntu 14.04 in 14.10


Mesece po izidu stabilne različice PHP 7.0 je morda pravi čas, da pomislite na nadgradnjo s starejših različic.

Vedno je previden pri nadgradnjah, zlasti v proizvodnem okolju, vendar je dobro, da nadgradite, da boste uživali v izboljšavah hitrosti, pa tudi funkcije, kot so namigi skalarnega tipa in še veliko več.

V svoj sistem lahko namestite dve različici PHP in eno uporabite za preskušanje, vendar ne pozabite, da v določenem času omogočite samo en modul PHP Apache.

Ta priročnik se osredotoča na nadgradnjo s PHP 5.X z uporabo mod_php v povezavi s spletnim strežnikom Apache ali PHP-FPM v povezavi s spletnim strežnikom Nginx.

  1. Namestite PHP 7 v Ubuntu 14.04 in 14.10
  2. Nadgradnja na PHP 7.0 s spletnim strežnikom Apache
  3. Nadgradnja na PHP 7.0 v spletnem strežniku Nginx

Zdaj pa se poglobimo v to, kako lahko nadgradite PHP na najnovejšo različico, in tudi konfigurirajte svoj sistem, da jo bo uporabljal.

Kako namestiti PHP 7 v Ubuntu 14.04 in 14.10

Najprej boste morali dodati PPA, ki ga vzdržuje Ondřej Surý za Debian in njegove izpeljanke, kot je Ubuntu, tako da zaženete spodnji ukaz:

$ sudo add-apt-repository ppa:ondrej/php

Nato sistem posodobite na naslednji način:

$ sudo apt-get update

Zdaj je vse nastavljeno in lahko namestite PHP 7.0, vendar bomo v različnih oddelkih preučili nadgradnjo za Apache in Nginx.

Ta odsek je namenjen sistemom, na katerih se izvaja Apache, kjer se PHP koda izvede z modulom mod_php . Namestite najnovejšo različico PHP, tako da zaženete spodnji ukaz:

$ sudo apt-get install php7.0
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libapache2-mod-php7.0 libssl1.0.2 php-common php7.0-cli php7.0-common
  php7.0-json php7.0-opcache php7.0-readline
Suggested packages:
  php-pear
The following NEW packages will be installed:
  libapache2-mod-php7.0 libssl1.0.2 php-common php7.0 php7.0-cli php7.0-common
  php7.0-json php7.0-opcache php7.0-readline
0 upgraded, 9 newly installed, 0 to remove and 80 not upgraded.
Need to get 4,371 kB of archives.
After this operation, 17.2 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

Zdaj je bil PHP nadgrajen v vašem sistemu, če pa uporabljate sistem za upravljanje baz podatkov MySQL, boste morali za posodobitev vezave PHP-MySQL izvršiti naslednji ukaz, namestiti pa boste morali tudi nekaj uporabnih modulov, kot so Curl, GD , Cli, JSON itd.

$ sudo apt-get install php7.0-mysql php7.0-cli php7.0-gd php7.0-json 

Če želite namestiti dodatne module PHP7.0, lahko z ukazom apt-cache navedete vse module PHP7.0 in jih namestite.

$ sudo apt-cache search php7
php-radius - radius client library for PHP
php-http - PECL HTTP module for PHP Extended HTTP Support
php-uploadprogress - file upload progress tracking extension for PHP
php-mongodb - MongoDB driver for PHP
php7.0-common - documentation, examples and common module for PHP
libapache2-mod-php7.0 - server-side, HTML-embedded scripting language (Apache 2 module)
php7.0-cgi - server-side, HTML-embedded scripting language (CGI binary)
php7.0-cli - command-line interpreter for the PHP scripting language
php7.0-phpdbg - server-side, HTML-embedded scripting language (PHPDBG binary)
php7.0-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary)
libphp7.0-embed - HTML-embedded scripting language (Embedded SAPI library)
php7.0-dev - Files for PHP7.0 module development
php7.0-curl - CURL module for PHP
php7.0-enchant - Enchant module for PHP
php7.0-gd - GD module for PHP
php7.0-gmp - GMP module for PHP
php7.0-imap - IMAP module for PHP
php7.0-interbase - Interbase module for PHP
php7.0-intl - Internationalisation module for PHP
php7.0-ldap - LDAP module for PHP
php7.0-mcrypt - libmcrypt module for PHP
php7.0-readline - readline module for PHP
php7.0-odbc - ODBC module for PHP
php7.0-pgsql - PostgreSQL module for PHP
php7.0-pspell - pspell module for PHP
php7.0-recode - recode module for PHP
php7.0-snmp - SNMP module for PHP
php7.0-tidy - tidy module for PHP
php7.0-xmlrpc - XMLRPC-EPI module for PHP
php7.0-xsl - XSL module for PHP (dummy)
php7.0 - server-side, HTML-embedded scripting language (metapackage)
php7.0-json - JSON module for PHP
php-all-dev - package depending on all supported PHP development packages
php7.0-sybase - Sybase module for PHP
php7.0-sqlite3 - SQLite3 module for PHP
php7.0-mysql - MySQL module for PHP
php7.0-opcache - Zend OpCache module for PHP
php-apcu - APC User Cache for PHP
php-xdebug - Xdebug Module for PHP
php-imagick - Provides a wrapper to the ImageMagick library
php-ssh2 - Bindings for the libssh2 library
php-redis - PHP extension for interfacing with Redis
php-memcached - memcached extension module for PHP, uses libmemcached
php-apcu-bc - APCu Backwards Compatibility Module
php-amqp - AMQP extension for PHP
php7.0-bz2 - bzip2 module for PHP
php-rrd - PHP bindings to rrd tool system
php-uuid - PHP UUID extension
php-memcache - memcache extension module for PHP
php-gmagick - Provides a wrapper to the GraphicsMagick library
php-smbclient - PHP wrapper for libsmbclient
php-zmq - ZeroMQ messaging bindings for PHP
php-igbinary - igbinary PHP serializer
php-msgpack - PHP extension for interfacing with MessagePack
php-geoip - GeoIP module for PHP
php7.0-bcmath - Bcmath module for PHP
php7.0-mbstring - MBSTRING module for PHP
php7.0-soap - SOAP module for PHP
php7.0-xml - DOM, SimpleXML, WDDX, XML, and XSL module for PHP
php7.0-zip - Zip module for PHP
php-tideways - Tideways PHP Profiler Extension
php-yac - YAC (Yet Another Cache) for PHP
php-mailparse - Email message manipulation for PHP
php-oauth - OAuth 1.0 consumer and provider extension
php-propro - propro module for PHP
php-raphf - raphf module for PHP
php-solr - PHP extension for communicating with Apache Solr server
php-stomp - Streaming Text Oriented Messaging Protocol (STOMP) client module for PHP
php-gearman - PHP wrapper to libgearman
php7.0-dba - DBA module for PHP

Po namestitvi PHP7.0 in njegovih modulov lahko znova zaženete spletni strežnik Apache in preverite različico PHP, kot je prikazano:

$ sudo service apache2 restart
$ php -v
PHP 7.0.7-1+donate.sury.org~trusty+1 (cli) ( 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

Informacije o PHP7 lahko preverite tudi tako, da v imeniku/var/www/html ustvarite datoteko info.php .

$ sudo vi /var/www/html/info.php

Vstavite naslednjo kodo in do strani dostopajte prek http://server_IP-address/info.php .

<?php
phpinfo();
?>

Ta odsek vas vodi skozi postopek nadgradnje na PHP7.0 in posodabljanje PHP-FPM s spletnim strežnikom Nginx, kjer se PHP koda izvede s pomočjo PHP-FPM.

Zaženite spodnji ukaz, da namestite najnovejše pakete PHP-FPM:

$ sudo apt-get install php7.0
$ sudo apt-get install php7.0-fpm

Zdaj je bil PHP nadgrajen, vendar če uporabljate MySQL, boste morali za posodobitev vezave PHP-MySQL in nekaterih dodatnih modulov izvesti naslednji ukaz, kot je prikazano:

$ sudo apt-get install php7.0-mysql php7.0-cli php7.0-gd php7.0-json 

Nato morate dodati datoteko fastcgi_pass v datoteko/etc/nginx/sites-enabled/default ali vse datoteke za vaša navidezna spletna mesta, ki morajo uporabljati in podpirati PHP, saj je pot PHP -FPM vtičnica, ki jo PHP uporablja za komunikacijo z Nginxom, se je spremenila.

Uporabite svoj najljubši urejevalnik in odprite datoteko za urejanje na naslednji način:

$ sudo vi /etc/nginx/sites-enabled/default 

Spremenite ali dodajte na naslednji način:

location ~ [^/]\.php(/|$) {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        if (!-f $document_root$fastcgi_script_name) {
                return 404;
        }
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
}

Nato znova zaženite Nginx in php-fpm, kot sledi:

$ sudo service nginx restart
$ sudo service php7.0-fpm restart

Na koncu lahko preizkusite, ali PHP deluje ali ne, tako da najprej preverite različico PHP in jo nato preizkusite s spletnim strežnikom.

$ php -v

Informacije o svojih PHP paketih dobite tako, da v direktorij/usr/share/nginx/html/napišete majhno datoteko info.php:

$ sudo vi /usr/share/nginx/html/info.php 

Vstavite to kodo v datoteko info.php:

<?php
phpinfo();
?>

Shranite in zapustite datoteko.

Odprite spletni brskalnik, vnesite http://server_IP-address/info.php in videli boste spodnjo stran, ki prikazuje podrobnosti o vašem PHP paketu.

Zdaj lahko z veseljem uporabljate PHP 7.0 v sistemu Ubuntu 14.04/14.10 in upam, da vam je ta vodič v pomoč.

Za vse dodatne informacije v zvezi z nadgradnjo PHP ali vprašanja ste dobrodošli v spodnjem oddelku za komentarje.