web-dev-qa-db-fra.com

PHP Erreur fatale: erreur non détectée: appel à la fonction non définie cache_get ()

J'essaie de faire fonctionner Drupal dans un conteneur Docker Alpine Linux mais pour une raison quelconque, drush ne peut pas être utilisé pour gérer le site Web. Le site Web lui-même fonctionne bien, drush ne peut tout simplement pas bootstrap.

Voici les informations pertinentes:

 /var/www/html # drush core-status
 Drupal version         :  7.56                        
 Site URI               :  http://default              
 Database driver        :  mysql                       
 Database hostname      :  vlp-dcimysql01.dhe.duke.edu 
 Database port          :                              
 Database username      :  tmp_drupal                  
 Database name          :  tmp_drupal                  
 PHP configuration      :  /etc/php7/php.ini           
 PHP OS                 :  Linux                       
 Drush script           :  /usr/bin/drush              
 Drush version          :  8.1.14                      
 Drush temp directory   :  /tmp                        
 Drush configuration    :                              
 Drush alias files      :                              
 Drupal root            :  /var/www/html               
 Drupal Settings File   :  sites/default/settings.php  
 Site path              :  sites/default               

/var/www/html # drush wd-show
PHP Fatal error:  Uncaught Error: Call to undefined function cache_get() in /var/www/html/includes/module.inc:754
Stack trace:
#0 /var/www/html/includes/module.inc(954): module_implements('system_theme_in...')
#1 /var/www/html/modules/system/system.module(2511): module_invoke_all('system_theme_in...')
#2 /var/www/html/includes/theme.inc(798): _system_rebuild_theme_data()
#3 /var/www/html/includes/theme.maintenance.inc(57): list_themes()
#4 /var/www/html/includes/bootstrap.inc(2872): _drupal_maintenance_theme()
#5 /var/www/html/includes/errors.inc(179): drupal_maintenance_theme()
#6 /var/www/html/includes/bootstrap.inc(2609): _drupal_log_error(Array, true)
#7 [internal function]: _drupal_exception_handler(Object(Error))
#8 {main}
  thrown in /var/www/html/includes/module.inc on line 754
Drush command terminated abnormally due to an unrecoverable error.                                                                                                                                                                     [error]
Error: Uncaught Error: Call to undefined function cache_get() in /var/www/html/includes/module.inc:754
Stack trace:
#0 /var/www/html/includes/module.inc(954): module_implements('system_theme_in...')
#1 /var/www/html/modules/system/system.module(2511): module_invoke_all('system_theme_in...')
#2 /var/www/html/includes/theme.inc(798): _system_rebuild_theme_data()
#3 /var/www/html/includes/theme.maintenance.inc(57): list_themes()
#4 /var/www/html/includes/bootstrap.inc(2872): _drupal_maintenance_theme()
#5 /var/www/html/includes/errors.inc(179): drupal_maintenance_theme()
#6 /var/www/html/includes/bootstrap.inc(2609): _drupal_log_error(Array, true)
#7 [internal function]: _drupal_exception_handler(Object(Error))
#8 {main}
  thrown in /var/www/html/includes/module.inc, line 754

Comme indiqué précédemment, la plate-forme est Alpine Linux, PHP est 7.1.9

Je peux ajouter plus si quelque chose n'est pas clair. J'ai vérifié les journaux PHP mais ils produisent juste la sortie ci-dessus. Je suis ouvert à ce qu'il manque juste un module/extension, mais je ne sais pas trop comment le comprendre si elle ne me dit jamais "extension de fonction non définieFunctionX" ou quelque chose comme ça. La fonction non définie ci-dessus semble être une fonction de base Drupal.

Notez que le site Web fonctionne, donc il communique sans problème avec la base de données, je peux aussi faire un SHOW TABLES dans MySQL et voir les tables d'installation Drupal ont été créées.

3
Bratchley

Dans mon cas (déplacement du site Web de production vers un nouveau serveur), memcached a été activé dans settings.php, PHP a été installé et fonctionne sur le serveur, mais pas PHP extension etait installé

1
Uncle Tor

L'erreur se produit car votre Drupal n'est pas correctement démarré. Normalement, vous devriez voir les lignes suivantes lorsque vous exécutez drush status:

Database                        :  Connected                                                      
Drupal bootstrap                :  Successful                                                     

Vous devez donc vérifier vos informations d'identification de base de données dans votre fichier de paramètres si elles pointent vers la bonne base de données et l'hôte (il est accessible à partir de votre ligne de commande), votre commande client MySQL est installée et présente (par exemple, avec apk add mariadb-client) et votre serveur MySQL est opérationnel.

Vous pouvez vérifier votre connexion à la base de données via la commande drush sql-connect. Si c'est correct, essayez de vous connecter à la base de données en exécutant $(drush sql-connect) dans votre shell.

En cas de problème, essayez de vider les caches Drush en utilisant d'abord drush cc drush.

Si votre site Web fonctionne correctement, vérifiez à nouveau comment vous chargez vos informations d'identification de base de données. Parfois, les gens utilisent des instructions if ou switch/case pour différents environnements basés sur l'hôte et oublient l'interface de ligne de commande qui n'est pas incluse.

0
kenorb