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.
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é
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.