Cover bilde via Pontier
PHP 7 ble utgitt i desember i fjor. Når du har testet koden din lokalt for å kjøre på den, er det på tide å oppgradere produksjonsserveren din. Generelt fant jeg ut at de fleste av nettstedene mine går bra ut på det.
Imidlertid mistenker jeg at ikke mange nettsteder har oppgradert ennå. Det er ofte tryggere og lettere å holde seg på eldre utgivelser. Faktisk viste en undersøkelse av WordPress-nettsteder at få har:
"Siden november 2016 kjører 52,9% av WordPress-nettsteder en PHP-versjon mindre enn PHP 5.5. Bare 3,4% av WordPress-nettstedene kjører PHP 7, den nåværende hovedversjonen av PHP." via PHP Compatibility Checker.
Men PHP 7 har nå vært ute i nesten et år.
I dagens episode går jeg gjennom min anbefalte tilnærming til å oppgradere til PHP 7 på Ubuntu 14.x og løse problemer med PHPMyAdmin, som mange tidlige oppgradere kjørte inn i.
På dette tidspunktet, hvis du bruker WordPress, installerer du PHP-kompatibilitetskontroll-pluginet for å sikre at du ikke kommer til å oppleve uventede problemer med din rekke plugins.
Jeg er alltid takknemlig for dine ideer og tilbakemeldinger. Hvis du har et spørsmål eller et emneforslag, vennligst legg inn dine tanker i kommentarene nedenfor.
Du kan også nå meg på Twitter @ reifman direkte. Dette gjelder spesielt med populære oppgraderingsskript som denne, hvor brukerens egen erfaring og innspilling vil være unik og verdifull.
Jeg prøvde å bruke noen standardguider til å oppgradere PHP 7 og løp inn i en rekke forskjellige problemer. Så de skriptene jeg deler med deg nedenfor, har blitt testet gjentatte ganger, og jeg tror det jeg presenterer, fungerer bra for deg.
Igjen, jeg satte stor pris på Digital Ocean, noe som gjør det enkelt å sikkerhetskopiere serveren min og gjentatte ganger lage testinstanser for å kjøre gjennom oppgraderingssteg fra grunnen av.
La oss komme i gang.
På dette tidspunktet vil du kanskje notere dine PHP .ini-tilpasninger og muligens sikkerhetskopiere php.ini-filen din, siden du senere må overføre disse til PHP 7.
Dette skal hjelpe deg med å finne din .ini-fil:
$ php --ini
Dette viste meg:
$ php --ini PHP Advarsel: PHP Oppstart: Kan ikke laste inn dynamisk bibliotek '/usr/lib/php5/20121212/newrelic.so' - /usr/lib/php5/20121212/newrelic.so: kan ikke åpne felles objektfil: Ingen slik fil eller katalog i Ukjent på linje 0 Konfigurasjonsfil (php.ini) Sti: / etc / php5 / cli Lastet konfigurasjonsfil: /etc/php5/cli/php.ini Skann etter ytterligere .ini-filer i: / etc / php5 / CLI / conf.d ...
For Apache var minen i / Etc / PHP5 / apache2
.
Først, la oss rense alle våre eldre PHP-pakker. Jeg fant det best å gjøre dette grundig, og dekket ikke bare PHP5, men også 5.5 og 5.6, som jeg hadde eksperimentert med på serveren min.
$ sudo apt-get-å rense php php-vanlig php-mcrypt php-mbstring $ sudo apt-get-å rense php5 php5-vanlig php5-cli libapache2-mod-php5 php5-krøll php5-gd php5-imap php5-intl php5-php5-php5-php5-php5-php5-php5 php5-php5-readline php5-sqlite $ sudo apt-get -y renge php5.5 php5.5-vanlig php5.5-mcrypt php5.5-mbstring $ sudo apt-get - og rens php5.6 php5.6-vanlig $ sudo apt-get autoremove
Da jeg ikke renset alle disse variantene av PHP, kjørte jeg inn i problemer senere prøvde å konfigurere PHP 7. Hvis du har en enkel tilnærming, vennligst del den i kommentarene.
$ sudo add-apt-depot ppa: ondrej / php Saminstallerbare PHP-versjoner: PHP 5.5, 5.6, PHP 7.0 og batterier inkludert. Du kan få mer informasjon om pakkene på https://deb.sury.org For PHP 5.4 på Ubuntu 12.04 bruk: ppa: ondrej / php5-oldstable BUGS & FEATURES: Denne PPA har nå en problemsporing: https: //deb.sury .org / # bug-rapportering LES LEST: Hvis du liker arbeidet mitt og ønsker å gi meg litt motivasjon, kan du vurdere å donere regelmessig: https://donate.sury.org/ ADVARSEL: add-apt-repository er brutt med ikke -UTF-8 lokaler, se https://github.com/oerdnj/deb.sury.org/issues/56 for løsning: # LC_ALL = C.UTF-8 add-apt-depot ppa: ondrej / php Mer info: https://launchpad.net/~ondrej/+archive/ubuntu/php Trykk på [ENTER] for å fortsette eller ctrl-c for å avbryte å legge til det gpg: keyring '/tmp/tmpj6czswxr/secring.gpg' opprettet gpg: nøkkelring / tmp / tmpj6czswxr / pubring.gpg 'opprettet gpg: forespørende nøkkel E5267A6C fra hkp server keyserver.ubuntu.com gpg: /tmp/tmpj6czswxr/trustdb.gpg: trustdb opprettet gpg: nøkkel E5267A6C: offentlig nøkkel "Launchpad PPA for Ondřej Surý" importert gpg: Totalt antall behandlet: 1 gpg: importert: 1 (RSA: 1) OK
Og så oppdaterte jeg pakker og distribusjon og renset eventuelle gjenværende filer:
$ sudo apt-get update $ sudo apt-få dist-oppgradering $ sudo apt-get autoremove
Du kan se feil som dette:
Lenken /vmlinuz.old er en skadet lenke Fjerne symbolsk lenke vmlinuz.old du må kanskje kjøre opp startlasteren din [grub]
Jeg valgte å starte om på dette tidspunktet, og det syntes å virke:
$ sudo reboot
Deretter installerer vi PHP7 og alle sine pakker:
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-krøll php7.0-ryddig php-xml php -json php7.0-mbstring php-gettext libmcrypt-dev mcrypt php-gd libmcrypt4 libmhash2 libtidy5 libxslt1.1 php-apcu-bc php-pære php7.0-mbstring php7.0-xml
På dette punktet vil du ønske å migrere eventuelle endrede innstillinger i konfigurasjonsfilene dine til /etc/php/7.0/apache2/php.ini
.
Jeg trengte også å legge til forlengelse = apc.so
til php.ini-filen min:
$ sudo nano /etc/php/7.0/apache2/php.ini
Jeg limte det her:
; utvidelse = php_pens_dis; extension = php_pdo_pgsql.dll; extension = php_pdo_sqlite.dll; extension = php_pgsql.dll; utvidelse = php_pdo_pgsql.dll; extension = php_pdo_sqlite.dll; extension = php_pdo_oci.dll; forlengelse = php_pdo_odbc.dll; extension = php_pdo_pgsql.dll; = php_shmop.dll extension = apc.so
På dette tidspunktet, hvis du kjører PHPMyAdmin, får du problemer med å laste inn Apache. I så fall må du deaktivere PHPMyAdmin:
$ sudo nano /etc/apache2/apache2.conf
Kommentere linjen som laster den nederst:
# Inkluder av kataloger ignorerer redaktørens og dpkgs backupfiler, # se README.Debian for detaljer. # Inkluder generiske utdrag av uttalelser InkluderOptional conf-enabled / *. Conf # Inkluder de virtuelle verts konfigurasjonene: IncludeOptional sites-enabled / *. Conf # vim: syntaks = apache ts = 4 sw = 4 sts = 4 sr noet # Inkluder / etc /phpmyadmin/apache.conf
Så aktiverte jeg mcrypt
og mbstring
og deretter startet Apache:
$ sudo phpenmod mcrypt $ sudo phpenmod mbstring $ sudo tjenesten apache2 restart
Jeg testet dette på en server som kjører apps bygget på bare HTML, for PHP og for Yii1.x, og alle av dem jobbet.
Deretter la vi reparere PHPMyAdmin-installasjonen. Mange mennesker sliter med dette.
Først har jeg lagt til pakkelageret av nijel:
$ sudo add-apt-depot ppa: nijel / phpmyadmin Siste phpMyAdmin pakker - https://www.phpmyadmin.net/. Basert på pakker tilgjengelig i Debian. Det er noen bemerkelsesverdige endringer: * det krever for øyeblikket oppdaterte PHP-pakker, du kan få pakker fra https://launchpad.net/~ondrej/+archive/ubuntu/php/ * det inkluderer embedded kopier av PHP-biblioteker Hvis du liker phpMyAdmin , kan du støtte det videre utvikling på https://www.phpmyadmin.net/donate/ eller https://www.phpmyadmin.net/sponsors/, takk! Mer info: https://launchpad.net/~nijel/+archive/ubuntu/phpmyadmin Trykk på [ENTER] for å fortsette eller ctrl-c for å avbryte legging av det gpg: keyring '/tmp/tmp6zix40vr/secring.gpg' opprettet gpg: keyring '/tmp/tmp6zix40vr/pubring.gpg' opprettet gpg: forespørsel nøkkel 06ED541C fra hkp server keyserver.ubuntu.com gpg: /tmp/tmp6zix40vr/trustdb.gpg: trustdb opprettet gpg: nøkkel 06ED541C: offentlig nøkkel "Launchpad PPA for Michal Čihař "importert gpg: ingen til enhver tid pålitelige nøkler funnet gpg: Totalt antall behandlet: 1 gpg: importert: 1 (RSA: 1) OK
Da oppdaterte jeg pakkene og installerte PHPMyAdmin:
$ sudo apt-get oppdatering $ sudo apt-get install phpmyadmin
Merk, dette gjenoppretter fortsatt en haug med eldre PHP 5.x-pakker, men PHPMyAdmin vil til slutt fungere.
Deretter uncommented jeg PHPMyAdmin-linjen vi kommenterte ovenfor.
$ sudo nano /etc/apache2/apache2.conf
Her:
# Inkluder av kataloger ignorerer redaktørens og dpkgs backupfiler, # se README.Debian for detaljer. # Inkluder generiske utdrag av uttalelser InkluderOptional conf-enabled / *. Conf # Inkluder de virtuelle verts konfigurasjonene: IncludeOptional sites-enabled / *. Conf # vim: syntax = apache ts = 4 sw = 4 sts = 4 sr noet Inkluder / etc / phpmyadmin / apache.conf
Og jeg startet Apache på nytt:
$ sudo service apache2 restart
Dette installerte PHPMyAdmin tilbake til standardplasseringen, noe som er svært usikkert og hackbart. Vennligst følg Installere og bruke PHPMyAdmin Med WordPress for bedre å sikre installasjonen.
Etterpå bygget jeg en liten phpinfo ();
fil for å bekrefte PHP 7 var aktiv:
Oppgradering til PHP 7 på min eksisterende Ubuntu 14.x var problematisk og krevde mange endringer fra publiserte skript for å få riktig. Jeg håper du finner dagens veiledning nyttig.
Hvis du likte dette, vennligst se etter kommende opplæringsprogrammer i Programmering med Yii2-serien og Bygg oppstarten din med PHP-serien, som dokumenterer prosessen med å bygge opp oppstarten min, Meeting Planner.
Du kan også følge meg @ reifman på Twitter eller sjekk min instruktørside for oppdateringer.