2011-02-07 11 views
48

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

+6

'<?php phpinfo()?>'でページを作成し、 'session.save_path'を探します。 – prodigitalson

+1

通常は/ tmp(IIRC)ですが、session.save_pathのphp.iniを確認してください –

答えて

51

デフォルトsession.save_pathは、お使いのシステムの一時ディレクトリに評価される""に設定されています。 https://bugs.php.net/bug.php?id=26757でこのコメントを述べてください:

今後のreleaess(原文のまま)でsave_pathの新しいデフォルトの一時ディレクトリを精査することになり、空の文字列になります。

あなたはパス保存現在セッションを見つけるにはsys_get_temp_dir to return the directory path used for temporary files

を使用することができ、あなたはどのような一時パスを見つけるためにthis answerを参照してください

を使用することができますこの関数が空文字列を返すときです。 /tmp/以外

+43

そしてコマンドラインからphp -r 'echo session_save_path()、 "\ n"; " –

+0

場所は設定されていますが、Ubuntu 10.10では「デフォルト」ではありません。きれいなPHPビルドがこれを提供するかもしれませんが、私が使用したDebian/Ubuntuビルドではありません。元の質問はUbuntu 10.10に関するものです。だから、使用されるLinuxディストリビューションに応じて、場所が 'デフォルト' /空白/ tmpと異なる可能性があるので、最後のコメント(または私の答え)ごとにコマンドラインで調べてください。 – bshea

1

私はその/ tmp /を信じています。あなたのphpinfo関数をチェックしてください、それはどこかにsession.save_pathを言う必要があります。

+0

PHPドキュメントでは "/ tmp"がデフォルトであると言われていますが、私が試したすべてのLinuxディストリビューションはセッションファイルを '/ tmp ' - あなたはそれが何かを知っていますか?ソースからPHPをビルドした場合はそうですか? "session.save_path"が空の場合は、ファイルがどこに行くのか分かりにくいかもしれません(したがって、この疑問は私にはあります) – Rich

-7

実行しているサーバーのタイプによって異なります。ディレクトリを見つけるには、php.iniファイルで次のものを探します。

upload_tmp_dir = "C:/ WAMPを/ tmp"

ディレクトリはあなたのために異なる場合があります。

+2

質問はセッションファイルであり、アップロードされたファイルではありませんでした – Rich

13

他の一般的なデフォルトの場所は/var/lib/php5/

+0

/var/lib/php5 /は決して書き込み可能ではありませんchmodding/chowningが必要です。 PHPがデフォルトで書き込み可能なセッションの場所を設定するべきではありませんか? – CMCDragonkai

+1

私はそれが他の人々が人々のセッションをハイジャックしようとすることができない共有ホスト上にあると思います。つまり、「username:admin」というセッションに書き込み、任意のセッションIDを設定してPHPSESSIDに設定します。共有ホスト環境でDrupalやWordpressのようなものにアクセスするのは非常に簡単でした。 – Mattisdada

50

まずあるini_get('session.save_path')またはphpinfo()を使用してsession.save_pathの値を確認します。空でない場合は、セッションファイルが保存されている場所が表示されます。多くのシナリオではデフォルトでは空ですが、その場合は次のようになります。

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

に保存されます

RHELやCentOSのシステムで

は、私はあなたがソースからPHPをコンパイルする場合session.save_pathが設定されていない場合、その後、セッションファイルが保存されることを考えます/tmp(これは私自身もテストしていません)。

+1

私はUbuntu 12.04.5 LTSを使用しています。何らかの理由で(私は 'php.ini'で何も変更していませんでした)私のセッションは'/var/lib/php5/sessions' –

+0

「設定されていません」?それは設定されていますが、php.iniでコメントアウトされています。これは、値を持たない、あるいは '設定されていません'という意味ではありません。コマンドラインから 'php -i | grep session.save_path'(これはおそらくApache)のセッション保存パスです。また、指定された 'php.ini'は、通常は 'default'パスを表示します。これはコメントアウトされています。 – bshea

+0

はい:デフォルトのパスとしてコンパイルされたものがない場合(ほとんどのディストリビューションではそうではありません)、ブランクが使用されます(デフォルトのコンパイル)。これは、フォールバック/デフォルト値としてシステムの一時領域(通常は '/ tmp')を使用します。 http://php.net/manual/en/session.configuration.php#ini.session.save-path – bshea

2

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

8

コンパイルされたデフォルトが不明な場合は、phpを参照してください。Apache用のiniファイル:

のUbuntu/Debianの現在の場所:
古いPHP5のインストール:/etc/php5/apache2/php.ini
Ubuntuの16.XXおよび/またはPHP5またはPHP7:/etc/php/*/apache2/php.ini

通常、これはコメントアウトデフォルト値が表示されます。

または:

php -r 'echo session_save_path() . "\n";' 

または:

php -i | grep session.save_path 

又はコマンドラインから

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

。 php.iniのの「CLI」/コマンドライン版

ノート・

は限りパスのデフォルト設定を保存すると、Apacheのバージョンと同じ通常です。同様のコマンドを使用してApache設定をwget/curlコマンドまたはWebページにエコーすることもできます。しかし、Apache php.iniでgrepするほうがはるかに簡単です。

EDIT:Per @aesede comment - >php -iを追加しました。ありがとう

+5

ちょうど、CLIで 'php -i'を実行するとphpinfo()を同等にすることができます。 – aesede