recherche

Maison  >  Questions et réponses  >  le corps du texte

Installation de poire sous Windows XAMPP PHP 8.1.10

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/


P粉141911244P粉141911244339 Il y a quelques jours418

répondre à tous(1)je répondrai

  • P粉222320176

    P粉2223201762024-01-01 00:19:35

    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

    $arg{0}

    Utilisez le code fixe :

    $arg[0]

    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< /a> 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 :

    function error_handler($errno, $errmsg, $file, $line, $vars)

    Après avoir appliqué le correctif :

    function error_handler($errno, $errmsg, $file, $line, $vars = null)

    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 grammaire

    while (list($i, $arg) = each($args)) {

    peut être remplacé par

    foreach ($args as $i => $arg) {

    list Exemple de grammaire

    list(,$first) = each($lines);

    peut être remplacé par

    foreach($lines as $first){}

    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 grammaire

    if (!strlen($opt_arg) && !(list(, $opt_arg) = each($args))) {

    peut être remplacé par

    if (!strlen($opt_arg) && !empty($args)) {
           foreach($args as $opt_arg){}

    PEAR est enfin disponible avec la version XAMPP : 8.2.0

    C:\xampp\php>pear help version
    PEAR Version: 1.10.1
    PHP Version: 8.2.0
    Zend Engine Version: 4.2.0
    Running on: Windows NT D5KGFJF 10.0 build 19045 (Windows 10) AMD64

    répondre
    0
  • Annulerrépondre