最近サーバーを切り替えたところ、ホームページが機能しなくなりました。次のテキストが表示されます。
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
それで問題は解決しなかったようです。今何をすべきかわからない...
Php設定ファイルのセッション保存パスを変更してみてください。/tmpが適切な場所です。
php.ini
session.save_path = /tmp
http://www.php.net/manual/en/session.configuration.php#ini.session.save-path
CentOSで同じ問題が発生しました:
chown -R Apache:apache /var/lib/php/session
Httpdユーザーをセッションディレクトリの所有者にすることもできます。
親フォルダーのアクセス許可を再帰的に変更した可能性があります。おそらく自分のユーザーが変更した可能性があります。
セッションフォルダに移動します: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
これにより、サーバーはプロジェクトにセッションを書き込むことができます。
私はこのアプローチについてかなり確信しています。
tmp
と/var/lib/session
は両方ともchmod 1777でなければなりません
と問題が解決しました。
セッションディレクトリの所有者をwww-dataに変更してみてください。これを行うには、次のコマンドを実行しますSudo chown -R www-data /var/lib/php/sessions
。これでうまくいきます。
ubuntu 12.04では/ var/lib/php5に1733の権限があります。php.iniのsession.save_pathを/ tmpに変更して、セッションを正しく保存します。代わりに、ini_set( 'session.save_path'、path_where_Apache_have_permission_777);でコードにパラメータを設定できます。
ここですべての解決策を試しましたが、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
)を再起動した後、ようやく動作しました!