
Ubuntu日本語フォーラム

ログインしていません。
件名のトラブルがどうしても解決できないので、仕組みに見当のつくかたがいらっしゃいましたら、教えて下さい。
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
オフライン
Mocchi による投稿:
コード:
$ ls -ld /usr/lib/php5/ drwxr-xr-x 4 root root 4096 1月 24 10:10 /usr/lib/php5/
正しくは /var/lib/php5 ですね。
オフライン
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ディレクトリに対するパーミション変更操作をしたことがありました。それが原因ですね。
どうもありがとうございました。
オフライン