Ubuntu 10.10にApache/PHPをインストールした場合のセッションファイルのデフォルトの場所は何ですか?
defaultsession.save_path
は""
に設定され、システムの一時ディレクトリに評価されます。 https://bugs.php.net/bug.php?id=26757 でこのコメントを参照してください:
今後のリリース(sic)でのsave_pathの新しいデフォルトは空の文字列になり、一時ディレクトリがプローブされます。
sys_get_temp_dir
を使用して、一時ファイルに使用されるディレクトリパスを返すことができます
currentセッション保存パスを見つけるには、次を使用できます。
this answer を参照して、この関数が空の文字列を返すときの一時パスを確認してください。
まず、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
に保存されます(これは自分でテストしていません)。
/tmp/
以外の一般的なデフォルトの場所は/var/lib/php5/
です
コンパイルされたデフォルトが不明な場合は、関連する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
を追加。ありがとう
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。の使用.
現在のsession.save_path
値を見つける唯一の確実なオプションは、セッションストレージディレクトリを見つけたい環境で常にphpinfo()
でチェックすることです。
理由:session.save_path
値をオーバーライドするか、実行時にini_set('session.save_path','/path/to/folder');
で設定することにより、php.ini
を変更するあらゆる種類のものが存在する可能性があります。たとえば、ISPConfig、PleskなどのWebサーバー管理パネルは、多くの場合、これを適応させて、各Webサイトにセッションファイルのある独自のディレクトリを提供します。
/ tmp /にあると思います。ただし、phpinfo関数を確認してください。どこかにsession.save_pathと表示されているはずです。