忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/04/23 18:23 |
XAMPP1.7.3 設定ファイルに定義されている管理ユーザ(controluser)での接続に失敗しました
http://localhost/phpmyadmin/
というURLでXAMPPにデフォルトで入っているphpMyAdminを利用できます。

それはいいのですがアクセスすると
設定ファイルに定義されている管理ユーザ(controluser)での接続に失敗しました

という謎エラーが。

ついでに
Your PHP parameter session.gc_maxlifetime is lower that cookie validity configured in phpMyAdmin, because of this, your login will expire sooner than configured in phpMyAdmin.

ってのも出てたので一緒にチェックしてみます。


まずDocumentRootにphpmyadminなんてディレクトリはありませんが、これは単純にxampp/apache/conf/extra/httpd-xampp.confでAliasが設定されています。
xampp/phpMyAdmin/あたりになっているはずですが、そこにphpMyAdminの本体が転がっています。
phpMyAdmin自体はMVC?何それ食い物?的な書かれ方をしてるので読むのは相当難儀です。

まず文言の定義はlang/japanese-utf-8.inc.phpです。
    $strControluserFailed = '設定ファイルに定義されている管理ユーザ(controluser)での接続に失敗しました';

で、次の$strControluserFailedはlibraries/dbi/mysqli.dbi.lib.phpです。
$GLOBALS…

PMA_DBI_connect()は都合二回呼ばれており、一回目の接続では失敗してtrigger_error()されています。
二回目の接続にはconfig.inc.phpで設定されている$cfg['Servers'][$i]['user']$cfg['Servers'][$i]['password']が使用されています。
ではこの一回目の接続にはどのパラメータが使用されているかというと、同じファイルの$cfg['Servers'][$i]['controluser']$cfg['Servers'][$i]['controlpass']です。

どゆこと?

名前からして$cfg['Servers'][$i]['user']には一般ユーザ、$cfg['Servers'][$i]['controluser']には管理者権限のユーザを割り当てるのかなとも思いますが、なんのためにこんな作りになっているのかはよくわかりませんでした。
$cfg['Servers'][$i]['controluser']をログインできる値にする、もしくは設定を削除することでエラーは発生しなくなります。


後者のエラーは、session.gc_maxlifetimeがcookieの有効期限より短いから意味がないぞ、というエラーです。
phpMyAdminは$cfg['LoginCookieValidity']でcookieの有効期限を設定します。
これが短すぎるとちょっと席を外しただけですぐログアウトされてしまい、不便になります。

で、それとは別にPHPではsession.gc_maxlifetimeでサーバ側セッションファイルの有効期限が設定されています。
この時間が過ぎたセッションファイルは廃棄処分されてしまいます。

結果として、session.gc_maxlifetime以上$cfg['LoginCookieValidity']以下の期間にアクセスされると、cookieは有効期限内だからブラウザはcookie値をちゃんと送ってくるのに、サーバ側のセッションファイルは削除されてしまっているので、セッションが継続できないよ、という状態になります。
実際のところは単にセッション期限切れになるだけなので特に問題はありません。
物凄い暇な人がcookieを解析して、有効期限が60分となっているのに50分後にアクセスしたらセッション期限切れになった!これはおかしい!とか言い出したりすることが万一あったりするかもしれないレベルの話です。

エラーが気持ち悪いならconfig.inc.phpの隅っこに
ini_set("session.gc_maxlifetime", $cfg['LoginCookieValidity']);
とか書いておけばいいです。
PR


2010/10/08 23:37 | Comments(0) | TrackBack() | PHP

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<今週の実績 2010/10/10 | HOME | ZF1.10 :Zend_Http_ClientとZend_Http_Cookie>>
忍者ブログ[PR]