December 2018  |  01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Drupal7 "PHP Fatal error: Call to undefined function user_access() " と言われ困った

VPSのサーバの様子がおかしくなり、やたら遅い。

`apt-get update` が1時間経っても終わらない状態。VPNがなんとか使えていたので、オーバーロードというわけではなさそう。

 

発生したのが前日の夜、明けても状態が変わらずで、シャットダウンもできなくなっていたので、コンソールで停止してから起動しなおした。しかし、結果は変わらず。`apt-get update`をして、急に遅くなったところでpsコマンドを実行し、プロセスを見ると、bgzip がいつまでも終わらないような感じでおそらくディスクI/Oの問題とみた。

とりあえずサポートに連絡、日中は使えないまま、夜になってやっと回復した。

 

それでも、http死活監視のメールが止まない。調べてみると、今度はWebサーバの問題。ログを見ると次の通りuser_access() 関数が無いと言われる。CMSを更新してから数ヶ月稼働していて、もとのソースアーカイブと比較しても変更はないことを確認した。

PHP Fatal error:  Call to undefined function user_access() in /home/infogres/drupal-7.59/includes/menu.inc on line 644

 

ググってみるとキャッシュというキーワードを見つけた。そして、ディスクI/Oトラブルで、DBが壊れているのではないかと考えた。

こんな時使える便利なコマンドが drush にあって、

$ drush cache-clear all

を実行すればよいらしい。して、実行してみたら、同じところでエラーになる(そりゃそうだ)。

結局、手動でchacheで始まるすべてテーブルについて、すべて行を消すことで(DELETE FROM CACHE*)解決した。

※ ただし、DELETE文は各テーブル毎に発行しなくてはならない。

 

ちなみに、cacheで始まる名前のテーブルは以下のとおり:

 

schema|table name

--------|-------------------------

 public | cache
 public | cache_admin_menu
 public | cache_block
 public | cache_bootstrap
 public | cache_features
 public | cache_field
 public | cache_filter
 public | cache_form
 public | cache_image
 public | cache_libraries
 public | cache_location
 public | cache_menu
 public | cache_page
 public | cache_panels
 public | cache_path
 public | cache_update
 public | cache_views
 public | cache_views_data
 public | ckeditor_input_forma
 public | ckeditor_settings

 

 

 

 

JUGEMテーマ:コンピュータ

 

スポンサーサイト

comments

   

trackback

pagetop