CGI/FastCGI 経由で実行されるドメインの PHP がデフォルトでセッションを使用できません

Created:

2016-11-16 13:17:07 UTC

Modified:

2017-08-16 16:32:03 UTC

2

Was this article helpful?


Have more questions?

リクエストを送信

CGI/FastCGI 経由で実行されるドメインの PHP がデフォルトでセッションを使用できません

Applicable to:

  • Plesk 12.5 for Linux
  • Plesk 12.0 for Linux
  • Plesk 11.5 for Linux
  • Plesk 10.4 for Linux/Unix

症状

CGI または FastCGI モードでは、PHP はドメインの FTP ユーザのパーミッションで実行されます。

PHP のサポートモードは、各ドメインに対して、[Web Hosting Settings]ページ( Domains -> domain.tld -> Web Hosting Settings )で構成することができます。


また、以下の PHP 警告が表示される場合があります。

Warning : session_start() [ function.session-start ]: open(/var/lib/php/session/sess_vr12g68afa365jenb96han4k24, O_RDWR) failed: Permission denied (13) in /var/www/vhosts/<domain>/httpdocs/<script>.php on line <N>
Warning : Unknown: open(/var/lib/php/session/sess_vr12g68afa365jenb96han4k24, O_RDWR) failed: Permission denied (13) in Unknown on line 0
Warning : Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0

原因

Parallels Plesk Panel のバージョン 10.4 より前のバージョンでは、PHP 構成は /etc/php.ini ファイルで設定されており、デフォルトでセッションパスが以下のように設定されていました。

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


このディレクトリのデフォルトのパーミッション値は 770 です。

~# ls -ld /var/lib/php/session
drwxrwx--- 2 root apache 65536 Dec 16 07:48 /var/lib/php/session
~#


PHP スクリプトは <ftpuser>:psacln アカウントの下で CGI/FastCGI モードで処理されるため、このプロセスはこのディレクトリを読み書きできず、実際的にはセッションファイルをピックアップします。

解決策

1. Parallels Plesk Panel をバージョン 10.4 にアップグレードします。

2. カスタマイズされた PHP 構成 をドメインに対してセットアップします。

3. ドメインの private ディレクトリの下にサブディレクトリを作成します。

~# mkdir /var/www/vhost/domain.tld/private/php_sess
~# chown <ftpuser>:psacln /var/www/vhost/domain.tld/private/php_sess
~# chmod 0700 /var/www/vhost/domain.tld/private/php_sess


4. カスタマイズされた PHP 構成ファイル php.ini を編集し、 session.save_path ディレクティブを下のように上書きします。

~# grep session.save_path  /var/www/vhosts/domain.tld/etc/php.ini
session.save_path = "/var/www/vhosts/domain.tld/private/php_sess"
他にご質問がございましたら、リクエストを送信してください
ログインしてコメントを残してください。