PR

[PHP] Warning session_start() open() failed: Permission の対処

先日、手元にあるphpMyAdmin でSQL を整形してもらおうと思い、久しぶりにVMware Server2 上で常に待っているBlueOnyx 上のサイトの1つにアクセスした。

BlueOnyx には管理画面からphpMyAdmin にアクセスできるのだが、どうも調子が悪い状態が続いていて、インストールしてから一度もお目見えしたことがない。仕方なく、個別のサイトに必要な時にFTP 転送している。で、何処にインストールしているのかすっかり忘れているので適当なサイトにアクセスし、/phpMyAdmin と入力したところ、エラーが表示された。

スポンサードリンク

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. : http://www.testsc2.com/phpMyAdmin/

BlueOnyx でのPHP セッションに関する問題はいくつかあり、たしか解決のために一部変更していた気がする。BlueOnyx は悪い意味で非常に親切だから、変更を亡き者にしてくれるなど徹底した管理体制を持っている。これがServersman@VPS でも顕著に現れるのだが。

幾つか試したところ、以下の記述を削除したらphpMyAdmin にアクセスできた。

/tmp/:/var/lib/php/session/:/home/.sites/39/site9/

しかしあまり適切な状態とは思えなかったので、そのサイトにアクセスしてみたところ、エラーが表示されている。このサイトはSoyCMS2 で構築されているようだ。

Warning: session_start(): open(/var/lib/php/session/sess_ea24isscgqt93a1hr38kmf9jn5, O_RDWR) failed: Permission denied (13) in /home/.sites/39/site9/web/sc2t3/soy/lib/soy2_build.php on line 76 : http://www.testsc2.com/sc2t3/admin/login

リロードするとセッション番号が変わっている。こういう場合、ディレクトリにデータが保存できていないことが多い。

Warning: session_start(): open(/var/lib/php/session/sess_d4g6daestejpc5ip4ameghpip3, O_RDWR) failed: Permission denied (13) in /home/.sites/39/site9/web/sc2t3/soy/lib/soy2_build.php on line 76 : http://www.testsc2.com/sc2t3/admin/login

PHP がバージョンアップされたときに “/var/lib/php/session” のパーミッションが 775 (drwxrwx—) に変更されたような感じで、それにより、セッションを利用する PHP ページを表示しようとしたときに、そのディレクトリーにセッション情報を書き込むことができなくなり、エラーが発生していた様子です。(中略)ただ、おそ らくは PHP をアップデートしたときに設定される権限の方が安全のように思うので、可能であれば Apache での実行権限を調整するなど、何らかの方法で、PHP セッション情報を保存するためのディレクトリーに 775 権限でも書き込めるように調整するのが良いかもしれません。(「EZ-NET: PHP のセッション処理でエラーになる」より引用)

仕方なくBlueOnyx にSSH でアクセスして状態を確かめる。

[root@localhost ~]# ls /var/lib/php/session/ -lha
total 92K
drwxrwx---. 2 root    apache 4.0K Jan  1 07:53 .
drwxr-xr-x. 3 root    root   4.0K Nov  3 13:23 ..
-rw-------  1 apache  apache  107 Jan  1 07:53 sess_4f92a04c9bcd07458d414b0dd3a7fa4b
-rw-------  1 testsc2 site9  1.9K Oct 26 11:41 sess_6tnqjt42bra4osmabp9l3o3l92
-rw-------  1 apache  apache  18K Oct  8 01:32 sess_8cc1f571fdc835e4406c6fd0033c654ced07a2d6
-rw-------  1 apache  apache  107 Oct  5 12:16 sess_8e2bcfb8acb4715a53c2b3d1b146ca12
-rw-------  1 testbc  site10  578 Oct  5 14:54 sess_aa4j3oftssgtbvlp5v7j5mesv0
-rw-------  1 apache  apache  18K Oct  5 12:16 sess_b5a051b550ba8743925a94918b3a77138f5c097f
-rw-------  1 apache  apache  18K Jan  1 07:53 sess_c6ff2cc70d2746762907596c3a20929a31e78c4d
-rw-------  1 apache  apache  107 Oct  8 01:32 sess_d7bac8f76a28a58adeb5da09b37becda
-rw-------  1 testbc  site10  348 Oct 15 01:44 sess_fkqgd2srcrsv85vmkuvhjr81g7

この状態はエラーになる典型パターンだった気がする。

[root@localhost ~]# ls /var/lib/php/ -lha
total 12K
drwxr-xr-x.  3 root root   4.0K Nov  3 13:23 .
drwxr-xr-x. 32 root root   4.0K Oct 21 16:33 ..
drwxrwx---.  2 root apache 4.0K Jan  1 07:53 session

上位ディレクトリを確認すると、確かに参考文献の言うとおりパーミッションが変わっている。

参考文献の言うとおりにコマンドを実行する。

[root@localhost ~]# chmod 777 /var/lib/php/session/

問題は解決し、サイトやphpMyAdmin にアクセス・ログインできたが、参考文献の言うとおり正しい解決策とは言えないかもしれない。

参考文献

コメント