Re: 突然消失した "サイト全体の Header Navigation" を復活させるには -仮の解決

2015年10月19日 at 13:17

█ apache - concrete5.7.5.2 と nginx - concrete5.7.5.2 を同時に起動し操作したときの挙動を調べる。

▋ apache とnginx の設定状況

▋ localhost:80

/Volumes/LaCie/Library/WebServer/Documents/concrete5.7.5.2

Apache/2.4.16 (Unix) - PHP Variables

MySQL データベース名:conc5751

▋ localhost:8888

/Volumes/LaCie/Sites/WebServer/Documents/concrete5.7.5.2

nginx/1.8.0 - PHP Variables

MySQL データベース名:conc5752

█ PHP のセッショントラブルについて研究する。

▋ 問題のセッショントラブルログ

▋ localhost:80 に変更してサイトを開いたときに表示された /sess_ 。

An unexpected error occurred.

SessionHandler::read(): open(/var/tmp//sess_k8gfo1sg408kd99r331j12l7e3, O_RDWR) failed: Permission denied (13)

そこで以下のように修正した。

現行

Owner: jibun(501) - jibun

Group: wheel (0) - System Group

修正

Owner: _www(70) - World Wide Wev Server

Group: wheel (0) - System Group

▋ localhost:8888 を起動すると以下の /sess_ が表示された。

An unexpected error occurred.

SessionHandler::read(): open(/var/tmp//sess_ukibv4q3n5nraedji3gib1ehg3, O_RDWR) failed: Permission denied (13)

そこで以下のように修正した。オーナーの変更が逆になっている。

現行

Owner: _www(70) - World Wide Wev Server

Group: wheel (0) - System Group

修正

Owner: jibun(501) - jibun

Group: wheel (0) - System Group

█ php のセッショントラブルの原因と思われる php の存在とその相違。

▋ apache - php

場所:/usr/bin

作成日:2015年9月17日木曜日 16:07

変更日:2015年9月17日木曜日 16:07

共有とアクセス権

システム: 読み・書き

wheel:........読み出しのみ

everyone: ..読み出しのみ

▋ nginx - php

場所:/usr/local/Cellar/php56/5.6.13_3/bin

作成日:2015年9月22日火曜日 11:07

変更日:2015年9月26日土曜日 20:09

共有とアクセス権

(自分): 読み・書き

admin: .......読み出しのみ

everyone: ..読み出しのみ

█ php.ini が二つ存在し使われていると考えられるので、その比較をすると以下の通り。

▋ apache と nginx の比較

apache - php ..................................................................nginx - php

/private/etc/php.ini ........................................................./usr/local/etc/php/5.6/php.ini

901extension=php_pspell.dll .........................................無し

1007 pdo_mysql.default_socket= /tmp/mysql.sock ......無し

1156 mysql.default_socket = /tmp/mysql.sock .............無し

1215 mysqli.default_socket = /tmp/mysql.sock ............無し

1556 session.hash_function = 0 .....................................session.hash_function = 1

1729 ;mbstring.language = Japanese ............................mbstring.language = neutral

1736 ;mbstring.internal_encoding = ...............................mbstring.internal_encoding = UTF-8

█ セッショントラブルの研究結果

php.ini を操作したり、localhost:80 - apache 、localhost:8888 - nginx をしばらく操作した結果、セッショントラブルが起こらなくなった。

apache - phpinfo() と nginx - phpinfo() を調べてみると、両方の Configuration File が同じになっていることが分かった。

▋ apache - phpinfo()

Server APIApache 2.0 Handler

Virtual Directory Supportdisabled

Configuration File (php.ini) Path/usr/local/etc/php/5.6

Loaded Configuration File/usr/local/etc/php/5.6/php.ini

▋ nginx - phpinfo()

Server APIFPM/FastCGI

Virtual Directory Supportdisabled

Configuration File (php.ini) Path/usr/local/etc/php/5.6

Loaded Configuration File/usr/local/etc/php/5.6/php.ini

仮の解決

サイト全体の Header Navigation が消失する現象、PHP のセッショントラブルが生ずる現象は起きなくなった。

前者は MySQL の複製が原因であり、後者は設定内容の違う PHP 使用が原因と考えられるが、確証は未だない。

タグ:

Re: 突然消失した "サイト全体の Header Navigation" を復活させるには -質問の追加

2015年11月3日 at 21:46
SessionHandler::read():


たまたま、上記エラーが自分が環境構築しているサーバでも発生したので、
結果と合わせて、報告します。

自分の場合は、concrete5のインストール途中で、上記メッセージが出ましたが、
原因は、phpがセッション管理情報をOSのファイル上に書き出すのですが、
その書き出し先のディレクトリにphp(自分の場合はphp-fpm)の実行ユーザー(グループ)が、
書き込み権限を持っていない為でした。

phpinfo()
で、セッション管理情報の書き出し先ディレクトリを確認し、該当ディレクトリの所有グループをnginxに変更し、エラー対応しました。

ですので、厳密にはconcrete5の不具合というよりは、phpを実行する為の環境準備ができていなかった事に成ります。