ようこそ!浜村拓夫の世界へ

    ブログ内検索

    最近の記事

    ブックマーク数の多い記事

    Blog Translation

    Powered By FC2ブログ

    Powered By FC2ブログ
    ブログやるならFC2ブログ


    FC2ブログ LOGIN

    with Ajax Amazon

    スポンサーサイト

    このエントリーを含むはてなブックマーク はてなブックマーク - スポンサーサイト あとで読む
    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。

    Nginx+phpMyAdminでCannot start sessionを解決する方法

    このエントリーを含むはてなブックマーク はてなブックマーク - Nginx+phpMyAdminでCannot start sessionを解決する方法 あとで読む
    VirtualBox上に、CentOS6.3+Nginx1.2.6+PHP5.4.11でテストサーバーを構築。
    phpMyAdminをインストールしてアクセスしようとしたら、PHPのセッション機能が使えない、というエラーメッセージが出た。

    phpMyAdmin - Error
    Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly.



    ググったら、解決方法が分かったのでメモ。

    Nginxを動作させるために「nginx」という専用ユーザーを用意しているのだが、
    この専用ユーザーが、PHPのセッションを管理するファイルへアクセスできない状態だった。

    (参考)phpMyAdminのCannot start session対処法 – あのねちょう

    大抵はphp.iniの「session.save_path」で指定しているのディレクトリのパーミッションの問題ということなので、確認してみました。

    # less /etc/php.ini
    /session.save_path
    session.save_path = "/var/lib/php/session"

    ということで、/var/lib/php/sessionが犯人と判明。次に、

    # cd /var/lib/php
    # ls -l
    drwxrwx--- 2 root apache 4096 May 7 11:43 session

    となっていた。
    ぼくはapacheの実行専用にユーザを作っていて、httpdから見れるファイルは全部その所有者にしてしまっていたため、このディレクトリに対してのアクセス権限がないことが原因だった。apacheの実行ユーザとして指定しているユーザにchown -Rしてやると解決した。



    自分の場合は、Apacheではなくて、Nginxを使っている。
    (Nginx1.2.6+PHP5.4.11+PHP-FPM)

    # vi /etc/php.ini
    ; RPM note : session directory must be owned by process owner
    ; for mod_php, see /etc/httpd/conf.d/php.conf
    ; for php-fpm, see /etc/php-fpm.d/*conf
    ;session.save_path = "/tmp"

    PHPのセッションの設定について、PHP-FPMの設定ファイルを見ろ、と。

    # vi /etc/php-fpm.d/www.conf
    ; Set session path to a directory owned by process user
    php_value[session.save_handler] = files
    php_value[session.save_path] = /var/lib/php/session

    PHP-FPMの設定ファイルも、php.iniを踏襲した形になっていた。
    ・PHPのセッション管理は、デフォルトでファイルを使用
    ・ファイルの位置は、/var/lib/php/session

    「/var/lib/php/session」のオーナーを調べてみると、上記ブログの説明と同じ状態だった。

    # cd /var/lib/php
    # ls -l
    drwxrwx---. 2 root apache 4096 1月 17 01:01 2013 session

    「apache」を「nginx」に変更する。

    # chown root:nginx session
    # ls -l
    drwxrwx---. 2 root nginx 4096 1月 17 01:01 2013 session

    これでOK。

    そして、Nginxを再起動

    # service nginx restart

    これで、PHPのセッションエラーが解決され、phpMyAdminが表示されるようになった。

    関連記事

    コメント

    コメントの投稿


    管理者にだけ表示を許可する

    トラックバック

    トラックバックURL:
    http://hamamuratakuo.blog61.fc2.com/tb.php/888-7a35c46d

    FC2Ad

    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。