Mise à niveau de votre serveur Linux vers PHP 7.0

Ce que vous allez créer

Image de couverture via PONTIER

introduction

PHP 7 est sorti en décembre dernier. Une fois que vous avez testé votre code localement pour l'exécuter, il est temps de mettre à niveau votre serveur de production. En général, j'ai trouvé que la plupart de mes sites fonctionnent bien.

Cependant, je soupçonne que peu de sites ont encore été mis à niveau. Il est souvent plus sûr et plus facile de rester sur des versions plus anciennes. En fait, une enquête sur les sites WordPress a montré que peu d’entre eux ont:

"En novembre 2016, 52,9% des sites Web WordPress utilisaient une version PHP moins PHP 5.5. Seulement 3,4% des sites Web WordPress utilisaient PHP 7, la version principale actuelle de PHP." via le vérificateur de compatibilité PHP.

Mais PHP 7 est sorti depuis presque un an. 

Dans l'épisode d'aujourd'hui, je vous expliquerai l'approche recommandée pour la mise à niveau vers PHP 7 sous Ubuntu 14.x et la résolution des problèmes avec PHPMyAdmin, que beaucoup de premiers correcteurs ont rencontrés..

Si vous utilisez WordPress, installez le plug-in PHP Compatibility Checker pour éviter tout problème imprévu avec votre tableau de plug-ins..

Je suis toujours reconnaissant de vos idées et de vos commentaires. Si vous avez une suggestion de question ou de sujet, merci de poster vos impressions dans les commentaires ci-dessous.

Vous pouvez également me joindre directement sur Twitter @reifman. Cela est particulièrement vrai avec les scripts de mise à niveau populaires tels que celui-ci, où l'expérience et les entrées des utilisateurs seront uniques et précieuses..

Mise à niveau de votre serveur

J'ai essayé d'utiliser certains guides standard pour mettre à niveau PHP 7 et j'ai rencontré une série de problèmes différents. Ainsi, les scripts que je partage avec vous ci-dessous ont été testés à plusieurs reprises, et je crois que ce que je présente fonctionnera bien pour vous..

Encore une fois, j’ai beaucoup apprécié Digital Ocean, qui facilite la sauvegarde de mon serveur et la création répétée d’instances de test pour exécuter de bout en bout les étapes de mise à niveau..

Commençons.

Remarque Toute personnalisation de PHP 5

A ce stade, vous voudrez peut-être noter vos personnalisations PHP .ini et éventuellement sauvegarder votre fichier php.ini, car vous devrez les migrer ultérieurement vers PHP 7..

Cela devrait vous aider à trouver votre fichier .ini:

$ php --ini

Cela m'a montré:

$ php --ini Avertissement PHP: Démarrage PHP: impossible de charger la bibliothèque dynamique '/usr/lib/php5/20121212/newrelic.so' - /usr/lib/php5/20121212/newrelic.so: impossible d'ouvrir le fichier objet partagé: Aucun fichier ni répertoire de ce type dans Unknown on line 0 Fichier de configuration (php.ini) Chemin: / etc / php5 / cli Fichier de configuration chargé: /etc/php5/cli/php.ini Recherchez d'autres fichiers .ini dans: / etc / php5 / cli / conf.d… 

Pour Apache, le mien était en / etc / php5 / apache2.

Supprimer PHP5 et les packages associés

Tout d’abord, purgeons tous nos anciens paquets PHP. J'ai trouvé qu'il était préférable de le faire à fond, en couvrant non seulement PHP5, mais également 5.5 et 5.6, que j'avais expérimentés sur mon serveur..

$ sudo apt-get -y purge php php-commun php-mcrypt php-mbstring $ sudo apt-get -y purge php5-php5-commun libpache2-mod-php5 php5-curl php5-gd php5-commun php5-commun php5-iml php5-intl php5-json php5-mcrypt php5-mysql php5-pspell php5-readline php5-sqlite $ sudo apt-get -y purge php5.5 php5.5-readline php5-readline php5-readline php5-readline php5-readline php5-sqlite-php5-sqlite-php5-sqlite $ y purge php5.6 php5.6-common $ sudo apt-get autoremove 

Quand je n'ai pas purgé toutes ces variantes de PHP, j'ai rencontré des problèmes plus tard en essayant de configurer PHP 7. Si vous avez une approche simple, partagez-la dans les commentaires..

Ajout d'une archive de paquet personnel pour PHP7 et PHPMyAdmin

$ sudo add-apt-repository ppa: ondrej / php Versions co-installables de PHP: PHP 5.5, 5.6, PHP 7.0 et piles incluses. Vous pouvez obtenir plus d'informations sur les paquets à l'adresse https://deb.sury.org. Pour PHP 5.4 sur Ubuntu 12.04, utilisez: ppa: ondrej / php5-oldstable BOGUES & CARACTÉRISTIQUES: Ce PPA a maintenant un suivi des problèmes: https: //deb.sury .org / # rapport de bogue VEUILLEZ LIRE ATTENTIVEMENT: Si vous aimez mon travail et souhaitez me donner un peu de motivation, envisagez de faire un don régulièrement: https://donate.sury.org/ ATTENTION: add-apt-repository est cassé avec non Pour la solution de contournement: # LC_ALL = C.UTF-8 add-apt-repository ppa: ondrej / php Pour plus d'informations sur cette solution de contournement, reportez-vous à la section https://github.com/oerdnj/deb.sury.org/issues/56. https://launchpad.net/~ondrej/+archive/ubuntu/php Appuyez sur [ENTER] pour continuer ou sur ctrl-c pour annuler l'ajout. gpg: keyring '/tmp/tmpj6czswxr/secring.gpg' created gpg: keyring '/ tmp / tmpj6czswxr / pubring.gpg 'créé gpg: clé demandée E5267A6C à partir du serveur hkp keyserver.ubuntu.com gpg: /tmp/tmpj6czswxr/trustdb.gpg: trustdb créé gpg: clé E5267A6C: clé publique "lancement" gpg: Nombre total traité: 1 gpg: importé: 1 (RSA: 1) D'ACCORD 

Et puis j'ai mis à jour mes paquets et ma distribution et nettoyé tous les fichiers restants:

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

Vous pouvez voir des erreurs comme ceci:

Le lien /vmlinuz.old est un lien endommagé. Suppression du lien symbolique vmlinuz.old, vous devrez peut-être réexécuter votre chargeur de démarrage [grub]

J'ai choisi de redémarrer à ce stade, et cela semblait fonctionner:

$ sudo reboot

Installer PHP7

Ensuite, nous installons PHP7 et tous ses paquets:

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

À ce stade, vous souhaiterez migrer tous les paramètres modifiés de vos fichiers de configuration vers /etc/php/7.0/apache2/php.ini.

J'avais aussi besoin d'ajouter extension = apc.so dans mon fichier php.ini:

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

J'ai collé ça ici:

; 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_odpc.png; extension = extension php_shmop.dll = apc.so

Désactiver PHPMyAdmin

À ce stade, si vous utilisez PHPMyAdmin, vous aurez des problèmes pour recharger Apache. Si tel est le cas, vous devrez désactiver PHPMyAdmin:

$ sudo nano /etc/apache2/apache2.conf

Commentez la ligne qui la charge en bas:

# L'inclusion de répertoires ignore les fichiers de sauvegarde des éditeurs et de dpkg, # consultez le fichier README.Debian pour plus de détails. # Inclut des extraits génériques d'instructions IncludeOptional avec / *. Conf # Inclut les configurations d'hôte virtuel: IncludeOptional avec les sites / *. Conf # vim: syntaxe = apache ts = 4 sw = 4 sts = 4 sr noet # Include / etc /phpmyadmin/apache.conf

Ensuite, j'ai activé mcrypt et mbstring puis redémarré Apache:

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

J'ai testé cela sur un serveur exécutant des applications construites uniquement en HTML, pour PHP et pour Yii1.x, et elles ont toutes fonctionné..

Réinstallation de PHPMyAdmin

Ensuite, réparons l’installation de PHPMyAdmin. Beaucoup de gens ont lutté avec cette.

Tout d'abord, j'ai ajouté le référentiel de paquets par nijel:

$ sudo add-apt-repository ppa: nijel / phpmyadmin Derniers paquets phpMyAdmin - https://www.phpmyadmin.net/. Basé sur les paquets disponibles dans Debian. Il y a quelques changements notables: * il nécessite actuellement des paquets PHP mis à jour, vous pouvez obtenir des paquets à l'adresse https://launchpad.net/~ondrej/+archive/ubuntu/php/ * il inclut des copies incorporées des bibliothèques PHP Si vous aimez phpMyAdmin , vous pouvez soutenir son développement ultérieur sur https://www.phpmyadmin.net/donate/ ou https://www.phpmyadmin.net/sponsors/, merci! Plus d'infos: https://launchpad.net/~nijel/+archive/ubuntu/phpmyadmin Appuyez sur [ENTER] pour continuer ou sur ctrl-c pour annuler l'ajout. Gpg: keyring '/tmp/tmp6zix40vr/secring.gpg' créé: keyring '/tmp/tmp6zix40vr/pubring.gpg' créé gpg: clé demandée 06ED541C auprès du serveur serveur de clés serveur.ubuntu.com gpg: /tmp/tmp6zix40vr/trustdb.gpg: trustdb créé gpg: clé 06ED541C: clé publique "Launchpad PPA" Čihař "importé gpg: aucune clé de confiance finalement trouvée gpg: nombre total traité: 1 gpg: importé: 1 (RSA: 1) OK 

Ensuite, j'ai mis à jour les packages et installé PHPMyAdmin:

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

Notez que cela rechargera toujours un paquet d'anciens paquets PHP 5.x, mais PHPMyAdmin fonctionnera finalement..

J'ai ensuite commenté la ligne PHPMyAdmin que nous avons commentée ci-dessus..

$ sudo nano /etc/apache2/apache2.conf

Ici:

# L'inclusion de répertoires ignore les fichiers de sauvegarde des éditeurs et de dpkg, # consultez le fichier README.Debian pour plus de détails. # Inclut des extraits génériques d’instructions IncludeOptional avec / *. Conf # Inclut les configurations d’hôte virtuel: IncludeOptional avec / #. Conf # vim: syntaxe = apache ts = 4 sw = 4 sts = 4 sr noet Include / etc / phpmyadmin / apache.conf

Et j'ai redémarré Apache:

$ sudo service apache2 restart

Sécurisez votre installation PHPMyAdmin

Cela a réinstallé PHPMyAdmin à l'emplacement par défaut, qui est très peu sécurisé et piratable. Veuillez suivre l’installation et l’utilisation de PHPMyAdmin avec WordPress pour mieux sécuriser votre installation..

Vérifiez que PHP 7 est en cours d'exécution

Ensuite, j'ai construit un petit phpinfo (); fichier pour vérifier que PHP 7 était actif:

En clôture

La mise à niveau vers PHP 7 sur mon Ubuntu 14.x existant posait un problème et nécessitait de nombreuses modifications par rapport aux scripts publiés. J'espère que le tutoriel d'aujourd'hui vous sera utile.

Si cela vous a plu, surveillez les prochains tutoriels dans nos séries Programmation avec Yii2 et Création de votre système de démarrage avec PHP, qui documente le processus de création de mon démarrage, Meeting Planner..

Vous pouvez également me suivre sur Twitter @reifman ou consulter ma page d'instructeur pour les mises à jour.. 

Liens connexes

  • Le principal PPA pour PHP (5.5, 5.6, 7.0) avec de nombreuses extensions PECL (Ondřej Surý)
  • WordPress Plugin Vérificateur de compatibilité PHP
  • Installation et utilisation de PHPMyAdmin avec WordPress (Envato Tuts +)