Uw Linux Server upgraden naar PHP 7.0

Wat je gaat creëren

Cover afbeelding via PONTIER

Invoering

PHP 7 werd afgelopen december uitgebracht. Nadat u uw code lokaal hebt getest om deze uit te voeren, is het tijd om uw productieserver te upgraden. Over het algemeen merkte ik dat de meeste van mijn sites er goed op draaien.

Ik vermoed echter dat nog niet veel sites zijn geüpgraded. Het is vaak veiliger en gemakkelijker om op oudere releases te blijven. Een onderzoek van WordPress-sites toonde zelfs aan dat slechts weinigen:

"Vanaf november 2016 heeft 52,9% van de WordPress-websites een PHP-versie zonder PHP 5.5. Slechts 3,4% van de WordPress-websites heeft PHP 7, de huidige hoofdversie van PHP." via PHP Compatibility Checker.

Maar PHP 7 is nu bijna een jaar uit. 

In de aflevering van vandaag zal ik je door mijn aanbevolen aanpak voor het upgraden naar PHP 7 op Ubuntu 14.x en het oplossen van problemen met PHPMyAdmin helpen, waar veel vroege upgrades tegenaan liepen.

Als u WordPress gebruikt, installeert u op dit moment de PHP Compatibility Checker-plug-in om ervoor te zorgen dat u geen onverwachte problemen tegenkomt met uw array van plug-ins.

Ik ben altijd dankbaar voor je ideeën en feedback. Als u een vraag of een suggestie voor een onderwerp heeft, kunt u uw mening plaatsen in de onderstaande opmerkingen.

Je kunt me ook rechtstreeks op Twitter @reifman bereiken. Dit geldt met name voor populaire upgradescripts zoals deze, waarbij de eigen ervaring en invoer van gebruikers uniek en waardevol zijn.

Uw server upgraden

Ik heb geprobeerd een aantal standaardhandleidingen te gebruiken voor het upgraden van PHP 7 en liep tegen een reeks verschillende problemen aan. Dus de scripts die ik hieronder met u deel, zijn herhaaldelijk getest en ik geloof dat wat ik presenteer goed voor u zal werken.

Nogmaals, ik waardeerde Digital Ocean enorm, waardoor ik gemakkelijk een back-up van mijn server kan maken en herhaaldelijk testexemplaren kan maken om upgrade-stappen vanaf nul te doorlopen.

Laten we beginnen.

Opmerking Eventuele aanpassingen aan PHP 5

Op dit punt wilt u wellicht uw PHP .ini-aanpassingen noteren en mogelijk een back-up van uw php.ini-bestand maken, omdat u deze later naar PHP 7 moet migreren.

Dit zou je moeten helpen je .ini-bestand te vinden:

$ php --ini

Dit liet me zien:

$ php --ini PHP Waarschuwing: PHP Opstarten: kan dynamische bibliotheek niet laden '/usr/lib/php5/20121212/newrelic.so' - /usr/lib/php5/20121212/newrelic.so: kan het gedeelde objectbestand niet openen: Een dergelijk bestand of directory niet in Unknown op regel 0 Configuration File (php.ini) Path: / etc / php5 / cli Loaded Configuration File: /etc/php5/cli/php.ini Scannen naar aanvullende INI-bestanden in: / etc / php5 / cli / conf.d ... 

Voor Apache was de mijne binnen / Etc / php5 / apache2.

Verwijder PHP5 en verwante pakketten

Laten we eerst al onze oudere PHP-pakketten opschonen. Ik vond het het beste om dit grondig te doen, niet alleen met PHP5 maar ook met 5.5 en 5.6, waarmee ik op mijn server had geëxperimenteerd.

$ 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 

Toen ik niet al deze variaties van PHP opschoonde, kwam ik later problemen tegen bij het proberen PHP 7 te configureren. Als je een eenvoudige aanpak hebt, deel deze dan in de comments.

Een persoonlijk pakketarchief toevoegen voor PHP7 en PHPMyAdmin

$ sudo add-apt-repository ppa: ondrej / php Co-installeerbare PHP-versies: PHP 5.5, 5.6, PHP 7.0 en batterijen inbegrepen. U kunt meer informatie over de pakketten krijgen op https://deb.sury.org. Voor PHP 5.4 op Ubuntu 12.04 gebruik: ppa: ondrej / php5-oldstable BUGS & FEATURES: Deze PPA heeft nu een issue tracker: https: //deb.sury .org / # bug-reporting ALSTUBLIEFT LEES: Als je mijn werk leuk vindt en me een beetje motivatie wilt geven, overweeg dan regelmatig te doneren: https://donate.sury.org/ WAARSCHUWING: add-apt-repository is onderbroken met -UTF-8 locales, zie https://github.com/oerdnj/deb.sury.org/issues/56 voor een oplossing: # LC_ALL = C.UTF-8 add-apt-repository ppa: ondrej / php Meer info: https://launchpad.net/~ondrej/+archive/ubuntu/php Druk op [ENTER] om door te gaan of Ctrl-c om het toevoegen van gpg te annuleren: keyring '/tmp/tmpj6czswxr/secring.gpg' created gpg: keyring '/ tmp / tmpj6czswxr / pubring.gpg 'created gpg: requesting key E5267A6C van hkp server keyserver.ubuntu.com gpg: /tmp/tmpj6czswxr/trustdb.gpg: trustdb created gpg: key E5267A6C: public key "Launchpad PPA for Ondřej Surý" geïmporteerd gpg: Totaal aantal verwerkt: 1 gpg: geïmporteerd: 1 (RSA: 1) OK 

En vervolgens heb ik mijn pakketten en distributie bijgewerkt en alle resterende bestanden gereinigd:

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

U ziet mogelijk fouten als deze:

De link /vmlinuz.old is een beschadigde link Symbolische link verwijderen vmlinuz.old mogelijk moet je je bootloader opnieuw opstarten [grub]

Ik heb ervoor gekozen om op dit punt opnieuw op te starten, en dat leek te werken:

$ sudo herstart

Installeer PHP7

Vervolgens installeren we PHP7 en al zijn pakketten:

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

Op dit punt wilt u alle gewijzigde instellingen in uw configuratiebestanden migreren naar /etc/php/7.0/apache2/php.ini.

Ik moest ook toevoegen extension = apc.so naar mijn php.ini-bestand:

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

Ik heb dat hier geplakt:

; 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 extensie = apc.so

Uitschakelen van PHPMyAdmin

Als u PHPMyAdmin gebruikt, kunt u nu problemen ondervinden bij het opnieuw laden van Apache. Als dit het geval is, moet u PHPMyAdmin uitschakelen:

$ sudo nano /etc/apache2/apache2.conf

Geef commentaar op de regel die hem onderaan laadt:

# Inclusief mappen negeert de back-upbestanden van editors en dpkg, # zie README.Debian voor details. # Inclusief generieke snippets met instructies IncludeOptional conf-enabled / *. Conf # Neem de virtuele hostconfiguraties op: IncludeOptional sites enabled / *. Conf # vim: syntax = apache ts = 4 sw = 4 st = 4 sr noet # Include / etc /phpmyadmin/apache.conf

Daarna heb ik ingeschakeld mcrypt en mbstring en herstart vervolgens Apache:

$ sudo phpenmod mcrypt $ sudo phpenmod mbstring $ sudo service apache2 restart

Ik testte dit op een server met apps die alleen op HTML waren gebouwd, voor PHP en voor Yii1.x, en ze werkten allemaal.

Opnieuw installeren van PHPMyAdmin

Laten we vervolgens de installatie van PHPMyAdmin repareren. Veel mensen worstelden hiermee.

Eerst heb ik de pakketrepository toegevoegd door nijel:

$ sudo add-apt-repository ppa: nijel / phpmyadmin Nieuwste phpMyAdmin-pakketten - https://www.phpmyadmin.net/. Gebaseerd op pakketten die beschikbaar zijn in Debian. Er zijn enkele opmerkelijke veranderingen: * het vereist momenteel bijgewerkte PHP-pakketten, je kunt pakketten krijgen van https://launchpad.net/~ondrej/+archive/ubuntu/php/ * het bevat ingebedde exemplaren van PHP-bibliotheken Als je van phpMyAdmin houdt , je kunt de verdere ontwikkeling ervan ondersteunen op https://www.phpmyadmin.net/donate/ of https://www.phpmyadmin.net/sponsors/, bedankt! Meer info: https://launchpad.net/~nijel/+archive/ubuntu/phpmyadmin Druk op [ENTER] om door te gaan of Ctrl-c om het toevoegen van gpg te annuleren: keyring '/tmp/tmp6zix40vr/secring.gpg' gemaakt gpg: keyring '/tmp/tmp6zix40vr/pubring.gpg' gemaakt gpg: verzoekende sleutel 06ED541C van hkp server keyserver.ubuntu.com gpg: /tmp/tmp6zix40vr/trustdb.gpg: trustdb gemaakt gpg: sleutel 06ED541C: publieke sleutel "Launchpad PPA voor Michal Čihař "gpg geïmporteerd: geen uiteindelijk vertrouwde sleutels gevonden gpg: totaal aantal verwerkt: 1 gpg: geïmporteerd: 1 (RSA: 1) OK 

Vervolgens heb ik de pakketten bijgewerkt en PHPMyAdmin geïnstalleerd:

$ sudo apt-get update $ sudo apt-get install phpmyadmin 

Let op, hierdoor worden nog een aantal oudere PHP 5.x-pakketten opnieuw geladen, maar uiteindelijk werkt PHPMyAdmin.

Vervolgens heb ik de PHPMyAdmin-regel waarop we hierboven hebben gereageerd, geannuleerd.

$ sudo nano /etc/apache2/apache2.conf

Hier:

# Inclusief mappen negeert de back-upbestanden van editors en dpkg, # zie README.Debian voor details. # Inclusief generieke fragmenten van instructies IncludeOptional conf-enabled / *. Conf # Neem de virtuele hostconfiguraties op: IncludeOptional sites-enabled / *. Conf # vim: syntax = apache ts = 4 sw = 4 st = 4 sr noet Include / etc / phpmyadmin / apache.conf

En ik startte Apache opnieuw op:

$ sudo service apache2 herstart

Beveilig uw PHPMyAdmin-installatie

Dit installeerde PHPMyAdmin terug naar de standaardlocatie, die erg onveilig en hackbaar is. Volg Installeren en gebruiken van PHPMyAdmin Met WordPress om uw installatie beter te beveiligen.

Controleer of PHP 7 actief is

Daarna heb ik een kleine gebouwd phpinfo (); bestand om te verifiëren dat PHP 7 actief was:

In Closing

Een upgrade naar PHP 7 op mijn bestaande Ubuntu 14.x was problematisch en vereiste veel veranderingen van de gepubliceerde scripts om goed te krijgen. Ik hoop dat je de handleiding van vandaag nuttig vindt.

Als je dit leuk vond, kijk dan voor komende tutorials in onze Programming With Yii2-serie en de Building Your Startup With PHP-serie, die het proces van het bouwen van mijn startup, Meeting Planner documenteert.

Je kunt me ook volgen @reifman op Twitter of mijn instructeurpagina bekijken voor updates. 

Gerelateerde Links

  • De belangrijkste PPA voor PHP (5.5, 5.6, 7.0) met veel PECL-uitbreidingen (Ondřej Surý)
  • WordPress Plugin PHP Compatibiliteitscontrole
  • Installeren en gebruiken van PHPMyAdmin met WordPress (Envato Tuts +)