お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2013-02-01 17:48:20

Mocchi
管理者
登録日: 2009-05-17

PHPスクリプトのsession_start()関数でエラーがハンドリングされる

件名のトラブルがどうしても解決できないので、仕組みに見当のつくかたがいらっしゃいましたら、教えて下さい。

Ubuntu Server Edition 12.04 (amd64)に、いわゆるLAMPのパッケージをインストールして使っています。以下のPHPスクリプトをサーバーに保存し、クライアントのウェブブラウザからアクセスすると、エラーがハンドリングされてしまいます。

コード:

<?php
function handle_error($errno, $errstr, $errfile, $errline, $errcontext)
{
    var_dump($errno);
    var_dump($errstr);
    var_dump($errfile);
    var_dump($errline);
    var_dump($errcontext);
    echo "fail";
    exit;
}
set_error_handler("handle_error", E_ALL);
session_start();
echo "success";

以下はその時のブラウザの表示です。

コード:

int(2)
string(107) "session_start(): open(/var/lib/php5/sess_b48ubke9dud48ghl3t9hbgnms7, O_RDWR) failed: Permission denied (13)"
string(18) "/var/www/index.php"
int(18)
array(6) {
  ["GLOBALS"]=>
  *RECURSION*
  ["_POST"]=>
  array(0) {
  }
  ["_GET"]=>
  array(0) {
  }
  ["_COOKIE"]=>
  array(0) {
  }
  ["_FILES"]=>
  array(0) {
  }
  ["_SESSION"]=>
  &array(0) {
  }
}
fail

エラーメッセージ「session_start(): open(/var/lib/php5/sess_b48ubke9dud48ghl3t9hbgnms7, O_RDWR) failed: Permission denied (13)」とあるので、「/var/lib/php5/」ディレクトリのパーミションを調べると、以下でした。

コード:

$ ls -ld /usr/lib/php5/
drwxr-xr-x 4 root root 4096  1月 24 10:10 /usr/lib/php5/

ここから、apache2実行ユーザーがこのディレクトリに対して書き込み権限を持っていないため、phpのセッションファイルを作ることができず、エラーとなっていると考えました。

しかしこの現象は、私が運用しているサーバーで起こることで、新規にインストールしたUbuntu Server Editionでは発生しません。こちらも当該ディレクトリのパーミションを調べましたが、まったく同じでした。

おそらく私が、サーバーの運用中に何か誤った操作や設定をしてしまったのではないかと思うのですが、いったい何をしたのか見当が付いていません。当該ディレクトリのパーミションを変更すればとりあえずは問題は解消できますが、もっと根本的なところ(たぶんアクセス制御周りだと思うのですが)に問題がありそうなので、それを解決したいです。

どうぞよろしくお願いします。

コード:

$ dpkg -l | egrep "php5|apache"
ii  apache2                                          2.2.22-1ubuntu1.2                                   Apache HTTP Server metapackage
ii  apache2-mpm-prefork                              2.2.22-1ubuntu1.2                                   Apache HTTP Server - traditional non-threaded model
ii  apache2-utils                                    2.2.22-1ubuntu1.2                                   utility programs for webservers
ii  apache2.2-bin                                    2.2.22-1ubuntu1.2                                   Apache HTTP Server common binary files
ii  apache2.2-common                                 2.2.22-1ubuntu1.2                                   Apache HTTP Server common files
ii  libapache-dbi-perl                               1.11-1                                              interface connecting apache server to database via perl's DBI
ii  libapache-session-perl                           1.89-1                                              modules for keeping persistent user data across HTTP requests
ii  libapache2-mod-fastcgi                           2.4.7~0910052141-1                                  Apache 2 FastCGI module for long-running CGI scripts
ii  libapache2-mod-fcgid                             1:2.3.6-1.1                                         an alternative module compat with mod_fastcgi
ii  libapache2-mod-perl2                             2.0.5-5ubuntu1                                      Integration of perl with the Apache2 web server
ii  libapache2-mod-php5                              5.3.10-1ubuntu3.5                                   server-side, HTML-embedded scripting language (Apache 2 module)
ii  libapache2-reload-perl                           0.11-2                                              module for reloading Perl modules when changed on disk
ii  libphp-jpgraph                                   1.5.2-12                                            Object oriented graph library for php5
ii  php5                                             5.3.10-1ubuntu3.5                                   server-side, HTML-embedded scripting language (metapackage)
ii  php5-cgi                                         5.3.10-1ubuntu3.5                                   server-side, HTML-embedded scripting language (CGI binary)
ii  php5-cli                                         5.3.10-1ubuntu3.5                                   command-line interpreter for the php5 scripting language
ii  php5-common                                      5.3.10-1ubuntu3.5                                   Common files for packages built from the php5 source
ii  php5-curl                                        5.3.10-1ubuntu3.5                                   CURL module for php5
ii  php5-dbg                                         5.3.10-1ubuntu3.5                                   Debug symbols for PHP5
ii  php5-gd                                          5.3.10-1ubuntu3.5                                   GD module for php5
ii  php5-intl                                        5.3.10-1ubuntu3.5                                   internationalisation module for php5
ii  php5-mcrypt                                      5.3.5-0ubuntu1                                      MCrypt module for php5
ii  php5-mysql                                       5.3.10-1ubuntu3.5                                   MySQL module for php5
ii  php5-pgsql                                       5.3.10-1ubuntu3.5                                   PostgreSQL module for php5
ii  rt3.8-apache2                                    3.8.11-1ubuntu0.1                                   Apache 2 specific files for request-tracker3.8
ii  rt4-apache2                                      4.0.4-2ubuntu0.1                                    Apache 2 specific files for request-tracker4

オフライン

 

#2 2013-02-02 17:06:34

epii
メンバ
登録日: 2008-12-11

Re: PHPスクリプトのsession_start()関数でエラーがハンドリングされる

Mocchi による投稿:

コード:

$ ls -ld /usr/lib/php5/
drwxr-xr-x 4 root root 4096  1月 24 10:10 /usr/lib/php5/

正しくは /var/lib/php5 ですね。

オフライン

 

#3 2013-02-06 10:21:36

Mocchi
管理者
登録日: 2009-05-17

Re: PHPスクリプトのsession_start()関数でエラーがハンドリングされる

epll による投稿:

正しくは /var/lib/php5 ですね。

なんとお恥ずかしい。。。

コード:

$ ls -ld /var/lib/php5
drwx--x--t 2 root root 4096 10月 10 18:56 /var/lib/php5

こちらが今回トラブルを抱えているサーバーのディレクトリパーミションで

コード:

$ ls -ld /var/lib/php5
drwx-wx-wt 2 root root 4096 Feb 1 16:39 /var/lib/php5

こちらがインストールしたてのサーバーのそれです。

思えば以前、varディレクトリに対するパーミション変更操作をしたことがありました。それが原因ですね。

どうもありがとうございました。

オフライン

 

Board footer

Powered by FluxBB