Notre client possède un site Web Drupal, mais l'hébergeur force tous les clients à passer de PHP 7.4 à PHP version 8, ce qui entraîne une erreur fatale PDO qui empêche le chargement du site Web.
Erreur reçue :
Erreur fatale : déclaration DrupalCoreDatabaseStatement::fetchAll(int $mode = PDO :: FETCH_DEFAULT, $column_index = null, $constructor_arguments = null) doit être compatible avec PDOStatement::fetchAll(int $mode = PDO::FETCH_DEFAULT, mixte...$args) /usr/www/users/kdpsipxqzt/core/lib/Drupal/Core/Database/Statement.php À la ligne 168
La fonction à l'origine du problème :
ERROR (L 168) -> public function fetchAll($mode = null, $column_index = NULL, $constructor_arguments = NULL) { // Call PDOStatement::fetchAll to fetch all rows. // PDOStatement is picky about the number of arguments in some cases so we // need to be pass the exact number of arguments we where given. switch (func_num_args()) { case 0: return parent::fetchAll(); case 1: return parent::fetchAll($mode); case 2: return parent::fetchAll($mode, $column_index); case 3: default: return parent::fetchAll($mode, $column_index, $constructor_arguments); } }
Quelqu'un a-t-il des idées pour résoudre ce problème ?
J'ai essayé plusieurs façons de dépanner et d'ajuster la fonction pour mieux correspondre à la fonction parent PDOStatement de PHP, mais sans succès !
Comparaison avec la PDOStatement de PHP :
public function fetchAll($how = null, $className = null, $ctorArgs = null)
Est-ce que j'ai raté quelque chose ?
Le type de retour doit être défini sur
数组
:Si vous utilisez PHP8.1, vous pouvez contourner cette erreur en ajoutant le commentaire
#[ReturnTypeWillChange]