web-dev-qa-db-ja.com

Apache / PHPのセッションファイルの場所

Ubuntu 10.10にApache/PHPをインストールした場合のセッションファイルのデフォルトの場所は何ですか?

69
cambraca

defaultsession.save_path""に設定され、システムの一時ディレクトリに評価されます。 https://bugs.php.net/bug.php?id=26757 でこのコメントを参照してください:

今後のリリース(sic)でのsave_pathの新しいデフォルトは空の文字列になり、一時ディレクトリがプローブされます。

sys_get_temp_dirを使用して、一時ファイルに使用されるディレクトリパスを返すことができます

currentセッション保存パスを見つけるには、次を使用できます。

this answer を参照して、この関数が空の文字列を返すときの一時パスを確認してください。

70
Gordon

まず、ini_get('session.save_path')またはphpinfo()を使用して、session.save_pathの値を確認します。空でない場合は、セッションファイルの保存場所が表示されます。多くのシナリオでは、デフォルトで空になっています。この場合、以下をお読みください。

UbuntuまたはDebianマシンでは、session.save_pathが設定されていない場合、セッションファイルは/var/lib/php5に保存されます。

RHELおよびCentOSシステムでは、session.save_pathが設定されていない場合、セッションファイルは/var/lib/php/sessionに保存されます

ソースからPHPをコンパイルすると、session.save_pathが設定されていない場合、セッションファイルは/tmpに保存されます(これは自分でテストしていません)。

60
Rich

/tmp/以外の一般的なデフォルトの場所は/var/lib/php5/です

15
Kevin Borders

コンパイルされたデフォルトが不明な場合は、関連するphp.iniを見てください。
通常、これはコメントアウトされたデフォルト値を表示します。

Ubuntu/Debianの古い/新しいphp.ini場所:
Apacheを使用した古いphp5:/etc/php5/Apache2/php.ini
NGINX + FPMを使用した古いphp5:/etc/php5/fpm/php.ini
Ubuntu 16+ with Apache:/etc/php/*/Apache2/php.ini *
Ubuntu 16+とNGINX + FPM-/etc/php/*/fpm/php.ini *

* /*/ =システムにインストールされている現在のPHPバージョン。

Apacheで使用中のPHPバージョンを表示するには

$ a2query -m | grep "php" | grep -Eo "[0-9]+\.[0-9]+"

7.3

PHP 7.3はこの例で実行されているバージョンなので、php.iniにそれを使用します。

$ grep "session.save_path" /etc/php/7.3/Apache2/php.ini

;session.save_path = "/var/lib/php/sessions"

または、ワンライナーの組み合わせ:

$ APACHEPHPVER=$(a2query -m | grep "php" | grep -Eo "[0-9]+\.[0-9]+") \ && grep ";session.save_path" /etc/php/${APACHEPHPVER}/Apache2/php.ini

結果:

;session.save_path = "/var/lib/php/sessions"


または、PHP自体を使用して、「cli」環境を使用して値を取得します(以下のNOTEを参照)。

$ php -r 'echo session_save_path() . "\n";'
/var/lib/php/sessions
$

これらも機能します:

php -i | grep session.save_path

php -r 'echo phpinfo();' | grep session.save_path

注意:

php.iniの 'cli'(コマンドライン)バージョン(= /// =)normallyには、Apache2/FPMバージョンと同じデフォルト値があります(少なくともsession.save_path)。同様のコマンドを使用して、Webサーバーの現在のPHPモジュール設定をWebページにエコーし、wget/curlを使用して情報を取得することもできます。 多くの投稿があります この点でのphpinfo()の使用に関して。ただし、PHPインターフェイスまたはgrepを正しいphp.iniで使用して、デフォルト値を表示する方が簡単です。

編集:@aesedeコメントごと-> php -iを追加。ありがとう

13
bshea

Mac上のセッションの正しいパスを見つけるのと同じ問題がありました。全体として、CLI PHPにはApacheモジュールとは異なる一時ディレクトリがあることがわかりました。Apacheは/var/tmpを使用し、CLIは/var/folders/kf/hk_dyn7s2z9bh7y_j59cmb3m0000gn/Tのようなものを使用しました。しかし、両方の方法で、session.save_pathが空の場合、sys_get_temp_dir()は正しいパスを取得しました。 PHP 5.5.4。の使用.

4
themarketka

現在のsession.save_path値を見つける唯一の確実なオプションは、セッションストレージディレクトリを見つけたい環境で常にphpinfo()でチェックすることです。

理由:session.save_path値をオーバーライドするか、実行時にini_set('session.save_path','/path/to/folder');で設定することにより、php.iniを変更するあらゆる種類のものが存在する可能性があります。たとえば、ISPConfig、PleskなどのWebサーバー管理パネルは、多くの場合、これを適応させて、各Webサイトにセッションファイルのある独自のディレクトリを提供します。

0
tanius

/ tmp /にあると思います。ただし、phpinfo関数を確認してください。どこかにsession.save_pathと表示されているはずです。

0
profitphp