Maison >développement back-end >PHP7 >Parlons du chemin difficile de la mise à niveau de ThinkPHP3.2.3 de php5 vers php7
Tout d'abord, ThinkPHP3.2.3 prend-il en charge php7 absolument ?
Sous Windows, le projet précédent a été déployé dans la version Apache2.4.17+php5.x car l'analyse de sécurité du réseau du client a détecté de nombreuses vulnérabilités, y compris des vulnérabilités à haut risque dans Apache et PHP, jusqu'à des centaines de fois. , il a un besoin urgent de réparation. S'il n'est pas réparé, il risque de fermer le site.
J'ai donc contacté le fournisseur du logiciel, qui a promis de coopérer avec la mise à niveau, mais n'a finalement pas réussi à mettre à niveau. La réponse donnée a été que ThinkPHP3.2.3 ne pouvait pas être déployé dans php7.
J'ai donc dû compter sur moi-même et j'ai tâtonné pendant trois ou quatre jours. Finalement, la mise à niveau a réussi. J'aimerais maintenant partager avec vous le processus général.
Recommandé (gratuit) : PHP7
1 Mettre à niveau Apache, adresse de téléchargement http://. httpd.apache.org/download.cgi, la version téléchargée est 2.4.33
La chose la plus importante est le fichier de configuration comme indiqué ci-dessous :
apache Load php support
PHPIniDir d:/GPS-LOCK/php/php.ini
LoadModule php7_module D:/GPS-LOCK/php/php7apache2_4.dll
Rencontré dans ce step Après de nombreux problèmes, Apache n'a pas pu démarrer lorsque le chemin PHPIniDir était activé. Finalement, il a été constaté que le fichier php.ini faisait référence au multi-threading php_ptheads.dll. Après plusieurs tentatives, le problème a été résolu.
2. Mise à niveau de php, adresse de téléchargement : https://windows.php.net/download/ Ce qui est téléchargé ici est la version 7.2.26,
Nous allons maintenant résumer les problèmes attendus lors de la mise à niveau. php7
1. Ici, vous devez installer la version compilée de la bibliothèque de classes vc++ correspondant à php7, vc_redist.x64.exe L'installation est vc15
2. 🎜>
Ceci est dû au fait que php7 ne charge pas la DLL associée au serveur SQL par défaut
3 Vous devez télécharger les pilotes Microsoft pour PHP pour SQL Server https://www. microsoft.com/en-us /download/details.aspx?id=20098, j'ai téléchargé la version 7.2
Modifiez le fichier d'emplacement comme suit
4 . Fichier php.ini dans php7, ext est omis
Configurez-le simplement comme indiqué ci-dessus. Actuellement, vous devez copier le fichier décompressé dans le répertoire php_.dll
phpext
3. Je pensais que le système pouvait fonctionner. normalement sous php7, mais le projet utilise le multi-threading, php doit prendre en charge pthreads, et il plante presque maintenant. Après avoir ajouté extension=pthreads au fichier php.ini, Apache ne peut pas redémarrer. Il s'avère que ptheads doit être exécuté en mode cli. L'adresse de téléchargement de ptheads est https://windows.php.net/downloads/pecl/releases/pthreads/
Décompressez le package de téléchargement
1. Mettez pthreadVC2. Le fichier dll est placé dans le répertoire racine de php
2. Copiez php_pthreads.dll dans le répertoire phpext
Démarrez à nouveau Apache et constatez qu'il ne peut pas être démarré. . Après avoir recherché de nombreuses informations, il s'avère que ptheads doit être exécuté en mode cli, ma solution est de créer deux fichiers de configuration php.ini, l'un pour que le site utilise php.ini et l'autre php-cli. ini que les ptheads peuvent utiliser. Le contenu du fichier est le même. À ce stade, la mise à niveau est enfin terminée.
Comme l'auteur n'est pas né dans une spécialisation PHP, il a fait de nombreux détours, mais la faille a finalement été corrigée. Si tout le monde rencontre également ce problème, vous pouvez communiquer et discuter ensemble
.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!