2017-01-20 3 views
2

によって作成されていない私は、次のいずれかを使用する場合を除き、ルート上のディレクトリに作成されたセッションを保存する:のsession_start():セッションデータファイルは、あなたのuid

session_save_path($_SERVER['DOCUMENT_ROOT'] . '/../storage/sessions'); 
    session_save_path($_SERVER['DOCUMENT_ROOT'] . '/../storage/sessions/'); // With an extra slash at the end 
ini_set('session.save_path', $_SERVER['DOCUMENT_ROOT'] . '/../storage/sessions'); 
ini_set('session.save_path', $_SERVER['DOCUMENT_ROOT'] . '/../storage/sessions/'); // Again with the extra slash 

とないの1

警告::にsession_start():セッションデータファイルがライン上/var/www/bootstrap/bootstrap.phpであなたのUID によって作成されていないこれらの方法は、私がページをロードするたびに、私は次のエラーを取得し、仕事します25

警告:session_start():セッションデータの読み込みに失敗しました:ファイル(パス: /var/www/public/../storage/sessions/)in /var/www/bootstrap/bootstrap.php on line 25

誰でも助けてくれますか?

編集:私のサーバーは、PHP 7.1

+0

これはLinuxのユーザー権限エラーです。これらの場所(フォルダは0755、ファイルは0644)に読み書きできること、そしてその場所にユーザーがアクセスできることを確認してください。 – Kaylined

+0

どのユーザーがその場所にアクセスしたいのかを知るにはどうすればよいですか?権限を変更するのが正しいでしょうか? – Oreborous

答えて

3

PHP上で動作するには、PHPを実行しているユーザーによって所有されるようにセッションファイルが必要です。

chown -R www-data:www-data /var/www/storage/sessions/を実行して、PHPユーザー(www-data:www-dataはPHPユーザーとグループで、:で区切られます)のセッションフォルダとファイルを所有してください。

PHPメソッドget_current_user()を使用するか、またはbash php -i | grep userで実行し、PHPを実行しているユーザーを見つけることができます。私はあなたのセッションファイルが別のユーザー(よくUID)によって作成されたことが考えられ

1

、セッションファイル(複数可)を移動(再)してみてください、あなたの一時からの/ var/tmpの

1

のようなディレクトリに何か私はこれを使用してまた、名前付きパイプを作成します。

<?php 
$user = get_current_user(); // get current process user 

// We need to modify the permissions so users can write to it 

exec("chown -R {$user}:{$user} $fifoPath");  
関連する問題