web-dev-qa-db-ja.com

PHP致命的なエラー:キャッチされていないエラー:未定義の関数cache_get()の呼び出し

DrupalをAlpine Linux Dockerコンテナー内で動作させるようにしていますが、何らかの理由でdrushを使用してWebサイトを管理することはできません。Webサイト自体は実際に正常に動作しますが、 Drushはブートストラップできません。

関連情報は次のとおりです。

 /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

前に述べたように、プラットフォームはAlpine Linux、PHPは7.1.9です。

不明な点があれば追加できます。私はPHPログを確認しましたが、それらは上記の出力を生成するだけです。モジュール/拡張機能が欠落しているだけですが、それを理解する方法は完全にはわかりません「undefined function extensionFunctionX」などのメッセージが表示されない場合、上記の未定義の関数はDrupalコア関数のようです。

ウェブサイトは機能するので、データベースと問題なく通信していることに注意してください。SHOW TABLES MySQLでDrupalインストーラーのテーブルが作成されたことを確認します。

3
Bratchley

私の場合(本番ウェブサイトを新しいサーバーに移動する)、settings.phpでmemcachedが有効になりました、PHPデーモンがサーバーにインストールされて実行されていましたが、PHP拡張機能はありませんインストールされました

1
Uncle Tor

エラーは、Drupalが正しくブートストラップされていないために発生します。通常、drush statusを実行すると、次の行が表示されます。

Database                        :  Connected                                                      
Drupal bootstrap                :  Successful                                                     

したがって、設定ファイル内のデータベース資格情報が正しいデータベースとホスト(コマンドラインからアクセス可能)を指しているかどうかを確認し、MySQLクライアントコマンドがインストールされて存在する(たとえば、apk add mariadb-clientを使用)かMySQLサーバーは稼働しています。

drush sql-connectコマンドを使用してデータベース接続を確認できます。それが正しい場合は、シェルで$(drush sql-connect)を実行してデータベースに接続してみてください。

問題が発生した場合は、まずdrush cc drushを使用してDrushキャッシュをクリアしてください。

Webサイトが正常に機能する場合は、データベース資格情報の読み込み方法を再確認してください。場合によっては、ホストに基づいてさまざまな環境でifまたはswitch/caseステートメントを使用していて、含まれていないコマンドラインインターフェイスを忘れてしまうことがあります。

0
kenorb