Actualizarea serverului dvs. Linux la PHP 7.0

Ce veți crea

Acoperă imaginea prin PONTIER

Introducere

PHP 7 a fost lansat în decembrie anul trecut. Odată ce ați testat codul local pentru a rula pe el, este timpul să faceți upgrade serverul de producție. În general, am constatat că majoritatea site-urilor mele rulează bine pe ele.

Cu toate acestea, bănuiesc că nu multe site-uri au îmbunătățit încă. Este adesea mai sigur și mai ușor să stați pe versiuni mai vechi. De fapt, un sondaj al site-urilor WordPress a arătat că puțini au:

"Începând cu noiembrie 2016, 52,9% din site-urile WordPress rulează o versiune PHP mai puțin PHP 5.5. Numai 3,4% din site-urile WordPress rulează PHP 7, actuala versiune principală a PHP." prin intermediul verificatorului de compatibilitate PHP.

Dar PHP 7 este acum aproape un an. 

În episodul de astăzi, vă voi trece prin abordarea recomandată de upgrade la PHP 7 pe Ubuntu 14.x și rezolvarea problemelor cu PHPMyAdmin, pe care o mulțime de upgrade-uri timpurii a intrat în.

În acest moment, dacă utilizați WordPress, instalați pluginul PHP Compatibility Checker pentru a vă asigura că nu veți întâlni probleme neprevăzute cu gama de plugin-uri.

Apreciez mereu ideile și feedback-ul. Dacă aveți o sugestie de întrebare sau subiect, vă rugăm să postați gândurile în comentariile de mai jos.

Puteți să mă contactați și pe Twitter @reifman direct. Acest lucru este valabil mai ales în cazul unor scripturi de actualizare populare, cum ar fi aceasta, în care experiența și contribuția proprie a utilizatorilor vor fi unice și valoroase.

Actualizarea serverului

Am incercat sa folosesc cateva ghiduri standard pentru a imbunatati PHP 7 si am facut o serie de probleme diferite. Deci, scripturile pe care le împărtășesc cu dvs. de mai jos au fost testate în mod repetat și cred că ceea ce vă prezint va funcționa bine pentru dvs..

Din nou, am apreciat foarte mult Oceanul Digital, ceea ce face ca backup-ul serverului meu să fie ușor și să creeze în mod repetat instanțe de test pentru a trece prin etape de upgrade de la zero.

Să începem.

Notă Orice personalizări în PHP 5

În acest moment, vă recomandăm să vă notați personalizarea PHP .ini și, eventual, să faceți o copie de rezervă a fișierului php.ini, după cum va trebui ulterior să le migrați în PHP 7.

Acest lucru ar trebui să vă ajute să găsiți fișierul .ini:

$ php -ini

Acest lucru mi-a arătat:

$ php --ini PHP Avertisment: PHP Startup: Imposibil de încărcat biblioteca dinamică '/usr/lib/php5/20121212/newrelic.so' - /usr/lib/php5/20121212/newrelic.so: nu se poate deschide fișierul obiect partajat: Nu există un astfel de fișier sau un director în Unknown on line 0 Fișier de configurare (php.ini): / etc / php5 / cli Fișier de configurare încărcat: /etc/php5/cli/php.ini Scanarea fișierelor suplimentare .ini în: / etc / php5 / cli / conf.d ... 

Pentru Apache, a fost al meu / Etc / php5 / apache2.

Eliminați PHP5 și pachetele asemănătoare

Mai întâi, să epuizăm toate pachetele PHP mai vechi. Am constatat că este mai bine să facem acest lucru bine, acoperind nu numai PHP5, dar și 5.5 și 5.6, pe care am experimentat cu serverul meu.

$ Sudo apt-get -Y php-php purjare comună php-mcrypt php-mbstring $ sudo apt-get -y purjare 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 -Y purjare php5.5 php5.5-comuna php5.5-mcrypt php5.5-mbstring $ sudo apt-get apt-get - y purge php5.6 php5.6-comun $ sudo apt-get autoremove 

Când nu am epurat toate aceste variații de PHP, am dat peste probleme mai târziu încercând să configurez PHP 7. Dacă aveți o abordare simplă, vă rugăm să o partajați în comentarii.

Adăugarea unei arhive de pachete personale pentru PHP7 și PHPMyAdmin

$ sudo add-apt-repository ppa: ondrej / php Versiuni PHP co-instalabile: PHP 5.5, 5.6, PHP 7.0 și baterii incluse. Puteți obține mai multe informații despre pachetele de la https://deb.sury.org Pentru PHP 5.4 pe Ubuntu 12.04 folosiți: ppa: ondrej / php5-oldstable BUGURI & CARACTERISTICI: Acest PPA are acum un tracker de probleme: https: //deb.sury .org / # bug-reporting VĂ RUGĂM CITIȚI: Dacă vă place munca mea și doriți să-mi dați o mică motivație, vă rugăm să luați în considerare donarea în mod regulat: https://donate.sury.org/ AVERTISMENT: add-apt-repository este rupt cu non- -UTF-8, consultați https://github.com/oerdnj/deb.sury.org/issues/56 pentru rezolvare: # LC_ALL = C.UTF-8 add-apt-repository ppa: ondrej / php Mai multe informații: https://launchpad.net/~ondrej/+archive/ubuntu/php Apăsați [ENTER] pentru a continua sau ctrl-c pentru a anula adăugarea lui gpg: keyring '/tmp/tmpj6czswxr/secring.gpg' gpg: keyring '/ tmp / tmpj6czswxr / pubring.gpg“a fost creat GPG: solicitând E5267A6C cheie de la serverul hkp keyserver.ubuntu.com GPG: /tmp/tmpj6czswxr/trustdb.gpg: trustdb creat GPG: E5267A6C cheie: cheie publică "Launchpad PPA pentru Ondřej SURY" importate gpg: Numărul total procesat: 1 gpg: importat: 1 (RSA: 1) O.K 

Apoi am actualizat pachetele și distribuția și am curățat toate fișierele rămase:

$ sudo apt-get actualizare $ sudo apt-get dist-upgrade $ sudo apt-get autoremove

S-ar putea să observați următoarele erori:

Linkul /vmlinuz.old este un link deteriorat Îndepărtarea link-ului simbolic vmlinuz.old va trebui să reluați încărcătorul de boot [grub]

Am ales să reboot în acest moment și asta părea să funcționeze:

$ sudo reboot

Instalați PHP7

Apoi, vom instala PHP7 și toate pachetele sale:

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 ordonat php php-XML -json php7.0-mbstring php-gettext libmcrypt-dev mcrypt php-gd libmcrypt4 libmhash2 libtidy5 libxslt1.1 php-apcu-bc php-para-mbstring php7.0 php7.0-xml

În acest moment, veți dori să migrați toate setările modificate în fișierele de configurare /etc/php/7.0/apache2/php.ini.

A trebuit să adaug și asta extensie = apc.so la fișierul meu php.ini:

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

Am lipit asta aici:

; extensie = php_openssl.dll; extensie = php_pdo_firebird.dll; extensie = php_pdo_dns; extensie = php_pdo_odbc.dll; extensie = php_pdo_pgsql.dll; extensie = php_pdo_sqlite.dll; extensie = php_pgsql.dll; extensie = php_shmop.dll extensie = apc.so

Dezactivarea programului PHPMyAdmin

În acest moment, dacă executați PHPMyAdmin, veți întâlni probleme în reîncărcarea Apache. Dacă da, va trebui să dezactivați PHPMyAdmin:

$ sudo nano /etc/apache2/apache2.conf

Comentează linia care o încarcă în partea de jos:

# Includerea directoarelor ignoră fișierele de rezervă ale editorilor și ale lui dpkg, # a se vedea README.Debian pentru detalii. # Includeți fragmente generice de instrucțiuni Includeți Configurare opțională confidențială / *. Conf # Includeți configurațiile gazdă virtuale: Includeți site-uri opționale activate / *. Conf # vim: sintaxă = apache ts = 4 sw = 4 sts = 4 sr noet # Include / etc /phpmyadmin/apache.conf

Apoi, am activat mcrypt și mbstring și apoi a reluat Apache:

$ sudo phpenmod mcrypt $ sudo phpenmod mbstring $ sudo serviciu apache2 restart

Am testat acest lucru pe un server care rulează aplicații construite pe HTML, PHP și Yii1.x și toate au lucrat.

Reinstalați PHPMyAdmin

Apoi, reparați instalarea PHPMyAdmin. O mulțime de oameni s-au luptat cu asta.

În primul rând, am adăugat depozitul de pachete de către nijel:

$ sudo add-apt-repository ppa: nijel / phpmyadmin Ultimele pachete phpMyAdmin - https://www.phpmyadmin.net/. Bazat pe pachetele disponibile în Debian. Există câteva modificări notabile: * în prezent necesită pachete actualizate PHP, puteți obține pachete de la https://launchpad.net/~ondrej/+archive/ubuntu/php/ * nu include copiile încorporate ale bibliotecilor PHP Dacă vă place phpMyAdmin , puteți susține dezvoltarea ulterioară la adresa https://www.phpmyadmin.net/donate/ sau https://www.phpmyadmin.net/sponsors/, mulțumită! Mai multe informații: https://launchpad.net/~nijel/+archive/ubuntu/phpmyadmin Apăsați [ENTER] pentru a continua sau ctrl-c pentru a anula adăugarea lui gpg: keyring '/tmp/tmp6zix40vr/secring.gpg' gpg: '/tmp/tmp6zix40vr/pubring.gpg Breloc' GPG creat: solicitarea 06ED541C cheie de la serverul hkp keyserver.ubuntu.com GPG: /tmp/tmp6zix40vr/trustdb.gpg: trustdb GPG creat: 06ED541C cheie: cheie publică „Launchpad PPA pentru Michal "Gig: importate: 1 (RSA: 1) OK: nu s-au găsit chei de încredere în cele din urmă gpg: Numărul total procesat: 1 gpg: 

Apoi, am actualizat pachetele și am instalat PHPMyAdmin:

$ sudo apt-get actualizare $ sudo apt-get instalează phpmyadmin 

Rețineți că aceasta va reîncărca o grămadă de pachete mai vechi de PHP 5.x, însă PHPMyAdmin va funcționa în cele din urmă.

Apoi, am necomentat linia PHPMyAdmin pe care am comentat-o ​​mai sus.

$ sudo nano /etc/apache2/apache2.conf

Aici:

# Includerea directoarelor ignoră fișierele de rezervă ale editorilor și ale lui dpkg, # a se vedea README.Debian pentru detalii. # Includeți fragmente generice de instrucțiuni Includeți Configurare opțională configurată / *. Conf # Includeți configurațiile gazdă virtuală: Includeți site-uri cu opțiuni activate * / conf. # Vim: sintaxă = apache ts = 4 sw = 4 sts = 4 sr noet Includeți / etc / phpMyAdmin / apache.conf

Și, am reînceput Apache:

$ sudo serviciu apache2 repornire

Asigurați-vă instalarea PHPMyAdmin

Acest lucru a instalat PHPMyAdmin înapoi în locația implicită, care este foarte nesigur și hackable. Vă rugăm să urmați instalarea și utilizarea PHPMyAdmin Cu WordPress pentru a vă asigura mai bine instalarea.

Verificați dacă PHP 7 se execută

După aceea, am construit un mic phpinfo (); fișierul pentru a verifica PHP 7 a fost activ:

În încheiere

Actualizarea la PHP 7 pe Ubuntu 14.x existente a fost problematică și a necesitat o mulțime de schimbări din scenariile publicate pentru a obține dreptate. Sper că veți găsi tutorialul de astăzi util.

Dacă v-ați bucurat de acest lucru, vă rugăm să urmăriți tutorialele viitoare din seria noastră de programare cu seria Yii2 și seria Building Your Startup With PHP, care documentează procesul de construire a startup-ului meu, planificatorul întâlnirilor.

Puteți, de asemenea, urmați-mi @reifman pe Twitter sau verificați pagina mea de instructor pentru actualizări. 

Link-uri conexe

  • A PPA principală pentru PHP (5.5, 5.6, 7.0) cu multe extensii PECL (Ondřej Surý)
  • WordPress Plugin Cercetare de compatibilitate PHP
  • Instalarea și utilizarea PHPMyAdmin cu WordPress (Envato Tuts +)
Cod