OpenPNEで全然ログイン出来ない
- 2009.10.16
- OpenPNE
RDBMS(MySQL)ベースでログイン出来たのにファイルベースだとログイン出来なかった。
ログインボタンを押した後ブラウザに表示されるエラー内容はこんな感じ。
Warning: session_destroy(): Session object destruction failed in /var/www/html/xxxxx.com/OpenPNE/webapp/lib/OpenPNE/Auth.php on line 204
Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/xxxxx.com/OpenPNE/webapp/lib/OpenPNE/Auth.php:204) in /var/www/html/xxxxx.com/OpenPNE/webapp/lib/util/util.php on line 34
借りている専用サーバではなにもしないで使えたOpenPNEだったけど、自分のサーバ環境では足りないものがあったのでメモ。
OpenPNEを使うには以下のものが必要のようだ。
参考:http://wiki.ryusendo.net/index.cgi?page=OpenPNE
- httpd
- php
- php-mbstring
- php-mysql
- php-mcrypt
- libmcrypt
- mysql
- mysql-server
- postfix(sendmailや他のMTAでも可だと思う)
特に忘れがちなのが php-mcrypt らしく、自分の環境でも入っていなかった。
ファイルベースでセッション管理するには必須のようだ。
php-mcrypt のインストール
CentOS5ならyumでOKらしい。
yum install php-mcrypt
CentOS4 の場合はRPMからインストールが必要。
手順はコピペ。
参考:http://centossrv.com/bbshtml/webpatio/364.shtml
1.mcryptを組み込むのに必要なlibmcryptをrpmforgeからインストールします。
# yum -y --enablerepo=rpmforge install libmcrypt-devel2.php用のmcrypt拡張モジュールをPHPRPMsよりダウンロードします。
# cd /usr/src/redhat/RPMS/i386/
# wget http://jaist.dl.sourceforge.net/sourceforge/phprpms/php-mcrypt-4.3.9-3.2.1.i386.rpm
最新版はhttp://phprpms.sourceforge.net/mcryptで確認して下さい。
CentOSはRHEL互換なのでRHEL4の物を落としました。
X86_64で無いならばi386で問題ありません。3.ダウンロードしたrpmをインストールします。
# rpm -Uvh php-mcrypt-4.3.9-3.2.1.i386.rpm
ただし、
手順は以下のページhttp://phprpms.sourceforge.net/mcrypt は現在更新されていない(?)
以下のページでも出来ると思う。
(2)「mcrypt 拡張をロードできません。PHP の設定を確認してください」というエラーへの対処。
を参考に。
これでヨシ、と思ったら。。。
いざログインしてみるとエラー。
あれ?ダメだ。
Auth.phpでググってみると、PEAR::Auth なるものハケーン。
perlでいうモジュールのようなものか?
インストールしてあるものを確認。
# pear list Installed packages, channel pear.php.net: ========================================= Package Version State Archive_Tar 1.3.1 stable Console_Getopt 1.2 stable DB 1.6.2 stable HTTP 1.2.2 stable Mail 1.1.3 stable Net_SMTP 1.2.3 stable Net_Socket 1.0.1 stable PEAR 1.4.9 stable XML_Parser 1.0.1 stable XML_RPC 1.5.0 stable
とりあえずインストールしてみる。
# pear install Auth
確認してみる
# pear list
Installed packages, channel pear.php.net:
=========================================
Package Version State
Archive_Tar 1.3.1 stable
Auth 1.6.2 stable
Console_Getopt 1.2 stable
DB 1.6.2 stable
HTTP 1.2.2 stable
Mail 1.1.3 stable
Net_SMTP 1.2.3 stable
Net_Socket 1.0.1 stable
PEAR 1.4.9 stable
XML_Parser 1.0.1 stable
XML_RPC 1.5.0 stable
これでどうだ?
だめらしい。。。
結局の所
config.phpの設定を
// デバッグモード // 0: off ... エラー非表示、エラーログを記録する // 1: on ... エラー表示、エラーログを記録しない // 2: on ... 1 + Smartyデバッグコンソール define('OPENPNE_DEBUGGING', 0);
にして、ログを記録させると
/var/www/html/sns.kaneyosi.com/OpenPNE/var/log/php_errors.log
というログが出来ていた。
内容はこんな感じ。
[16-Oct-2009 13:06:20] PHP Warning: Unknown(): open(/var/lib/php/session/sess_be885c6f8a428b01a1bf8466fc878cf7, O_RDWR) failed: Permission denied (13) in Unknown on line 0
[16-Oct-2009 13:06:20] PHP Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0
[16-Oct-2009 13:06:20] PHP Warning: session_destroy(): Session object destruction failed in /var/www/html/xxxx.com/OpenPNE/webapp/lib/OpenPNE/Auth.php on line 204
結局原因は /var/lib/php/session にアクセス権が無いという事だったというオチ。
httpd.confの実行ユーザーを変えていたからか。
対処方法は/var/lib/php/session のパーミッションを770から777にするか、apacheの実行グループをapacheにすれば良かっただけの話。
早速httpd.conf を修正。
# User/Group: The name (or #number) of the user/group to run httpd as.
# . On SCO (ODT 3) use "User nouser" and "Group nogroup".
# . On HPUX you may not be able to use shared memory as nobody, and the
# suggested workaround is to create a user www and use that user.
# NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET)
# when the value of (unsigned)Group is above 60000;
# don't use Group #-1 on these systems!
#
User myname
Group apache ←修正
で、apacheリスタート。
ようやくうまくいきました。
-
前の記事
postfixadmin +procmailな環境でメールディレクトリの自動作成・削除 2009.10.15
-
次の記事
MySQLのINT等の整数型カラム(UNSIGNED)から減算する時に注意 2009.10.29