Lorsque j'ai suivi les instructions d'installation de PEAR à partir du [manuel][1] officiel, j'ai eu cette erreur :
致命错误:未捕获错误:无法在 C:xampp_latestphp 中打开所需的 'phar://go-pear.phar/index.php' (include_path='C:xampp_latestphpPEAR') go-pear.phar:1284 堆栈跟踪:#0 {main} 抛出在 C:xampp_latestphpgo-pear.phar 第 1284
D'accord
J'ai essayé de chercher d'autres solutions et j'ai trouvé [celle-ci][2]. Cependant, je n'arrive toujours pas à installer pear et j'obtiens toujours cette erreur :
PHP 致命错误:C:xampp_latestphpgo-pear.php 第 1182
Les lignes ne prennent plus en charge la syntaxe d'accès par décalage de tableau et de chaîne avec des accolades.
J'ai essayé d'installer via le réseau et la ligne de commande, mais j'ai eu la même erreur.
Une autre mise à jour.. J'ai continué mes recherches et j'ai obtenu ceci : association J'ai donc essayé de changer les accolades en crochets dans différents fichiers comme suggéré dans l'erreur et au final, j'ai eu cette erreur :
PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function error_handler(), 4 passed and exactly 5 expected in C:xampp_latestphppearpearcmd.php:446 Stack trace: #0 [internal function]: error_handler(8192, 'trim(): Passing...', 'C:\xampp_latest...', 152) #1 C:xampp_latestphppearPEARXMLParser.php(152): trim(NULL) #2 C:xampp_latestphppearPEARXMLParser.php(166): PEAR_XMLParser->postProcess(NULL, 'options') #3 [internal function]: PEAR_XMLParser->endHandler(Object(XMLParser), 'options') #4 C:xampp_latestphppearPEARXMLParser.php(102): xml_parse(Object(XMLParser), '<commands versi...') #5 C:xampp_latestphppearPEARCommand.php(247): PEAR_XMLParser->parse('<commands versi...') #6 C:xampp_latestphppearPEARCommand.php(302): PEAR_Command::registerCommands() #7 C:xampp_latestphppearpearcmd.php(54): PEAR_Command::getCommands() #8 {main} thrown in C:xampp_latestphppearpearcmd.php on line 446 [1]: https://pear.php.net/manual/en/installation.getting.php [2]: https://www.ivankristianto.com/install-or-update-pear-on-xampp-for-windows/
Fondamentalement, le PEAR fourni par xampp n'a pas été mis à jour pour fonctionner sous PHP 8.x. et a été confronté à plusieurs fonctionnalités obsolètes et supprimées dans PHP 8.0 qui ont entraîné des erreurs fatales PHP.
1) Problème d'accès au personnage
Le premier problème est que l'accès aux chaînes utilise des accolades
{}
访问时从零开始的偏移量已被删除,只能使用方括号[]
.Comparez le code original
Utilisez le code fixe :
Solution :
Utilisez des expressions régulières
{($[a-zA-Z0-9+]*)}
搜索xampp/php/pear
文件夹中的所有文件并替换与[]
IMPORTANT : Vérifiez chaque occurrence et ne modifiez pas l'expression régulière dans votre script ! ! !
2) Problème ArgumentCountError non détecté
Le deuxième problème est que la fonction php set_error_handler où est supprimé le dernier paramètre dans PHP 8.0.0.
La fonction de rappel nécessite cinq arguments, mais elle n'obtient que quatre arguments, donc l'appel échoue avec
PHP Fatal error: Uncaught ArgumentCountError: Too Fewarguments to function error_handler( ),4 项通过,正好 5 项预期
.Solution :
Recherchez
set_error_handler(
调用并找到引用的回调函数error_handler
et rendez le dernier paramètre facultatif.Dans mon cas c'était dans le script
xamppphppearpearcmd.php
et la définition de la fonction était à la ligne 446 :Comparez la définition originale de la fonction :
Après avoir appliqué le correctif :
REMARQUE : J'ai découvert qu'un "bug" a été signalé sur le Apache Friends Support Forumrenvoyé en septembre 2021.
3) Problème de fonction non définie each()
Le troisième problème est que la fonction PHP each() a été supprimée, ce qui renvoie
PHP致命错误:未捕获错误:调用未定义的函数each()
.Solution
Recherchez toutes les occurrences de
every(
(使用空格消除结果集中的函数“foreach”),并使用函数foreach
pour vérifier et mettre à jour, en utilisant le fichier de paramètres correct dans chacune.while
Exemple de grammairepeut être remplacé par
list
Exemple de grammairepeut être remplacé par
Il y en a aussi dans la
If - else
语句中使用的其他情况,可以用emtpy($args)
后跟foreach($args as $opt_arg ){}
variable de build $opt_arg.If - else
Exemple de grammairepeut être remplacé par
PEAR est enfin disponible avec la version XAMPP : 8.2.0