web-dev-qa-db-ja.com

セッションをapacheに書き込む方法

最近サーバーを切り替えたところ、ホームページが機能しなくなりました。次のテキストが表示されます。

Warning: session_start() [function.session-start]: open(/var/lib/php/session/sess_eqbchncji8kj22f0iqa9g3v7u2, O_RDWR) failed: Permission denied (13) in /var/www/vhosts/alt.alternativedc.com/httpdocs/index.php on line 6

Warning: Unknown: open(/var/lib/php/session/sess_eqbchncji8kj22f0iqa9g3v7u2, 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

これは、セッションフォルダーに書き込みができないことを意味すると想定していたため、サーバーにsshした後、次のコマンドを実行しました。

chmod o+rw /var/lib/php/session

それで問題は解決しなかったようです。今何をすべきかわからない...

14
Daniel Kats

Php設定ファイルのセッション保存パスを変更してみてください。/tmpが適切な場所です。

php.ini

session.save_path = /tmp

http://www.php.net/manual/en/session.configuration.php#ini.session.save-path

20
Eddie

CentOSで同じ問題が発生しました:

chown -R Apache:apache /var/lib/php/session

Httpdユーザーをセッションディレクトリの所有者にすることもできます。

16
Martin Zeitler

親フォルダーのアクセス許可を再帰的に変更した可能性があります。おそらく自分のユーザーが変更した可能性があります。
セッションフォルダに移動します:
cd ~;cd /var/lib/php/

セッションフォルダが見つかった場合は、ターミナルに次の2つのコマンドを記述します。
cd ~;次に家に帰る
Sudo chown -R www-data:www-data /var/lib/php/session

または、セッションフォルダが「セッション」ではなく「セッション」の場合:
cd ~;次に家に帰る
Sudo chown -R www-data:www-data /var/lib/php/sessions

これにより、サーバーはプロジェクトにセッションを書き込むことができます。
私はこのアプローチについてかなり確信しています。

6
daniel Warui

tmp/var/lib/sessionは両方ともchmod 1777でなければなりません

と問題が解決しました。

2
Muharrem

セッションディレクトリの所有者をwww-dataに変更してみてください。これを行うには、次のコマンドを実行しますSudo chown -R www-data /var/lib/php/sessions。これでうまくいきます。

1
Akshay jumbade

ubuntu 12.04では/ var/lib/php5に1733の権限があります。php.iniのsession.save_pathを/ tmpに変更して、セッションを正しく保存します。代わりに、ini_set( 'session.save_path'、path_where_Apache_have_permission_777);でコードにパラメータを設定できます。

0
Giacomo

ここですべての解決策を試しましたが、php.iniが他の構成によって上書きされていたため、解決しませんでした。

私が使用した犯人を見つけるために このトリック

grep -lR 'php_value' /etc/

そして、それは/etc/httpd/conf.d/php.confを台無しにしていた。そこで、その値をphp_value session.save_path "/var/lib/php/session"からphp_value session.save_path "/tmp"に変更しました。

Apache(service httpd restart)を再起動した後、ようやく動作しました!

0
carla