Bulgarian (Български) translation by Mihail Petrov (you can also view the original English article)

Изображението е предоставено от PONTIER
Въведение
Седма версия на PHP бе официално представена в края на Декември 2015. След като вече сте локално възможностите му локално, вече е време за актуализиране на сървърната инфраструктура. В общи линии установих че почти всички сайтове който поддържам се държат доста добре, след ъпдейта.
Но въпреки това имам подозрения, че не са толкова много сайтовете които са направили крачка в тази посока. Ако работи на старите версии няма нужда да го пипаме. В интерес на истината, проучване проведено от WordPress показва че доста малка част от приложенията, използващи платформата са преминали към най-актуалната версия на технологията.
"Към ноември 2016, повече от половината от сайтовете ползват версия PHP 5.5". "Само забележителните 3,4% от приложенията ползват последната актуална версия на PHP".
Но PHP 7 е факт повече от година.
Днес ще ви покажа тайните на миграцията към PHP 7 върху сървър с Ubuntu 14.x. Ще разгледаме решенията на някой често срещани проблеми с PHPMyAdmin, на които можете да се натъкнете по време на процедурата по ъпдейт.
Ако ползвате WordpPress силно препоръчвам да инсталирате плъгина PHP Compatibility Checker и да направите проверка на съвместимостта на вашите плъгини с версията на PHP.
Ще се радвам на обратна връзка от ваша страна. Ако имате въпроси или предложения, моля добавете ги като коментар.
Можете да ме намерите и в Twitter @reifman. Вашите предложения ще са особено ценни в този контекст в който персоналното потребителско изживяване ще бъде напълно уникално в дадената ситуация.
Мигриране на сървъра
Първите ми опити за миграция, удариха на камък главно поради факта, че ползвах официалният пътеводител на PHP. Ще ви предоставя серия от скриптове, които са тествани многократно и работят.
Искам да изразя благодарност за страхотните услуги предоставяни от Digital Ocean, даващи възможност за архивиране на активните услуги както и създаване на множество тестови инстанции.
Да започваме
Архивиране на текущите настройки
Препоръчително е да архивирате всичките си текущи настройки намиращи се в php.ini файла на текущата ви инсталация на PHP
Следната команда ще ви помогне да локализирате вашият php .ini файл.
$ php --ini
Резултата е:
$ php --ini 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 Configuration File (php.ini) Path: /etc/php5/cli Loaded Configuration File: /etc/php5/cli/php.ini Scan for additional .ini files in: /etc/php5/cli/conf.d ...
Локацията на Apache се намира в /etc/php5/apache2
.
Премахнете PHP5 и всички свързани с тази версия пакети
Нека първо елиминираме всички стари PHP пакети. Добра практика е да елиминираме както PHP версия 5.5 така и 5.6.
$ sudo apt-get -y purge php php-common php-mcrypt php-mbstring $ 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 $ sudo apt-get -y purge php5.5 php5.5-common php5.5-mcrypt php5.5-mbstring $ sudo apt-get -y purge php5.6 php5.6-common $ sudo apt-get autoremove
Когато експериментирах, първоначално пропуснах тази стъпка и имах доста конфигурационни проблеми на по късен етап.
Добавяне на Personal Package Archive за PHP7 и PHPMyAdmin

$ sudo add-apt-repository ppa:ondrej/php Co-installable PHP versions: PHP 5.5, 5.6, PHP 7.0 and batteries included. You can get more information about the packages at https://deb.sury.org For PHP 5.4 on Ubuntu 12.04 use: ppa:ondrej/php5-oldstable BUGS&FEATURES: This PPA now has a issue tracker: https://deb.sury.org/#bug-reporting PLEASE READ: If you like my work and want to give me a little motivation, please consider donating regularly: https://donate.sury.org/ WARNING: add-apt-repository is broken with non-UTF-8 locales, see https://github.com/oerdnj/deb.sury.org/issues/56 for workaround: # LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php More info: https://launchpad.net/~ondrej/+archive/ubuntu/php Press [ENTER] to continue or ctrl-c to cancel adding it gpg: keyring `/tmp/tmpj6czswxr/secring.gpg' created gpg: keyring `/tmp/tmpj6czswxr/pubring.gpg' created gpg: requesting key E5267A6C from hkp server keyserver.ubuntu.com gpg: /tmp/tmpj6czswxr/trustdb.gpg: trustdb created gpg: key E5267A6C: public key "Launchpad PPA for Ondřej Surý" imported gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1) OK
Направете актуализация на всички пакети, дистрибуции и премахнете всички ненужни файлове:
$ sudo apt-get update $ sudo apt-get dist-upgrade $ sudo apt-get autoremove
Можете да получите съобщение за грешка:
The link /vmlinuz.old is a damaged link Removing symbolic link vmlinuz.old you may need to re-run your boot loader[grub]
Експериментите ми показват че рестартирането на системата елиминира проблема:
$ sudo reboot
Инсталиране на PHP7
Време е за инсталиране на необходимите пакети:
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
Необходимо е да мигрирате всички настройки във вашите конфигурационни файлове към /etc/php/7.0/apache2/php.ini
Необходимо е да се добави и пакета extension=apc.so
в php.ini файла.
$ sudo nano /etc/php/7.0/apache2/php.ini
Добавете следните настройки :
;extension=php_openssl.dll ;extension=php_pdo_firebird.dll ;extension=php_pdo_mysql.dll ;extension=php_pdo_oci.dll ;extension=php_pdo_odbc.dll ;extension=php_pdo_pgsql.dll ;extension=php_pdo_sqlite.dll ;extension=php_pgsql.dll ;extension=php_shmop.dll extension=apc.so
Деактивиране на PHPMyAdmin
Ако имате активна инстанция на PHPMyAdmin, ще срещнете проблеми при опит да презаредите Apache. Ако това е така е необходимо да деактивирате приложението.
$ sudo nano /etc/apache2/apache2.conf
Коментирайте следните редове:
# Include of directories ignores editors' and dpkg's backup files, # see README.Debian for details. # Include generic snippets of statements IncludeOptional conf-enabled/*.conf # Include the virtual host configurations: IncludeOptional sites-enabled/*.conf # vim: syntax=apache ts=4 sw=4 sts=4 sr noet # Include /etc/phpmyadmin/apache.conf
Активирайте mcrypt
и mbstring
след което рестартирайте Apache.
$ sudo phpenmod mcrypt $ sudo phpenmod mbstring $ sudo service apache2 restart
Решението е тествано и работи коректно.
Преинсталиране на PHPMyAdmin
Време е да поправим текущата инсталация на PHPMyAdmin. Това се оказва препъни камък за доста хора.
Първата стъпка беше да добавя следният пакет.
$ sudo add-apt-repository ppa:nijel/phpmyadmin Latest phpMyAdmin packages - https://www.phpmyadmin.net/. Based on packages available in Debian. There are some notable changes: * it currently requires updated PHP packages, you can get packages from https://launchpad.net/~ondrej/+archive/ubuntu/php/ * it does include embedded copies of PHP libraries If you like phpMyAdmin, you can support it's further development at https://www.phpmyadmin.net/donate/ or https://www.phpmyadmin.net/sponsors/, thanks! More info: https://launchpad.net/~nijel/+archive/ubuntu/phpmyadmin Press [ENTER] to continue or ctrl-c to cancel adding it gpg: keyring `/tmp/tmp6zix40vr/secring.gpg' created gpg: keyring `/tmp/tmp6zix40vr/pubring.gpg' created gpg: requesting key 06ED541C from hkp server keyserver.ubuntu.com gpg: /tmp/tmp6zix40vr/trustdb.gpg: trustdb created gpg: key 06ED541C: public key "Launchpad PPA for Michal Čihař" imported gpg: no ultimately trusted keys found gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1) OK
След което актуализирах пакетите на PHPMyAdmin.
$ sudo apt-get update $ sudo apt-get install phpmyadmin
След края на тази процедура всичко трябва да е наред.
Разкоментирайте, зареждането на PHPMyAdmin.
$ sudo nano /etc/apache2/apache2.conf
Както е показано тук:
# Include of directories ignores editors' and dpkg's backup files, # see README.Debian for details. # Include generic snippets of statements IncludeOptional conf-enabled/*.conf # Include the virtual host configurations: IncludeOptional sites-enabled/*.conf # vim: syntax=apache ts=4 sw=4 sts=4 sr noet Include /etc/phpmyadmin/apache.conf
Рестартирайте Apache:
$ sudo service apache2 restart
Защитете инсталацията на PHPMyAdmin
Процедурата, която изпълнихме инсталира PHPMyAdmin на локацията му по подразбиране, което е изключително лоша идея, заради своята несигурност. Следвайте инструкциите за да подсигурите инсталацията на приложението.
Проверка на валидността на миграцията
Най-лесният начин за проверка е използването на директивата phpinfo();
с цел да се листне информацията за текущото състояние на системата.

Заключение
Както видяхте процедурата не е много елементарна и изисква доста допълнителни настройки и трикове, за да постигнем необходимия резултат. Надявам се този урок да ви е дал полезни знания.
Ако сте харесали този ресурс, не се колебайте и разгледайте уроците от серията Програмиране с Yii2 и създаване на StartUP с PHP които представят цялостният път по изгаждането на моят start up Meeting Planner
Следвайте ме в Twitter @reifman и посетете страницата ми в сайта.
Референции и линкове
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.
Update me weeklyEnvato Tuts+ tutorials are translated into other languages by our community members—you can be involved too!
Translate this post