web-dev-qa-db-ja.com

Symfony 3.1.5警告:SessionHandler :: read():セッションデータファイルはuidによって作成されません

Ubuntu 14.04でSymfony 3.1.5を実行しています。PHP 7.1およびVagrant 1.8.6/VirtualBox 5.1.6によって管理されるApache 2.4.23スタック。単純なフロントエンドで応答をレンダリングするために作成したコントローラー:

_<?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\BrowserKit\Response;

class LandingController {
    /**
     * @Route("/", name="homepage")
     */
    public function showAction(){
        return new Response('This is the landing page!');
    }
}
_

_/app_dev.php_経由でSymfonyフロントエンドにアクセスしようとすると、次のように表示されます:

Warning: SessionHandler::read(): Session data file is not created by your uid 500 Internal Server Error - ContextErrorException

Apacheログの読み取り:

CRITICAL - Uncaught PHP Exception Symfony\Component\Debug\Exception\ContextErrorException: "Warning: SessionHandler::read(): Session data file is not created by your uid" at /var/www/conan/var/cache/dev/classes.php line 366

Symfony devログは次を読み取ります:

==> /var/www/conan/var/logs/dev.log <== [2016-10-11 14:23:04] request.INFO: Matched route "{route}". {"route":"homepage","route_parameters":{"_controller":"AppBundle\\Controller\\LandingController::showAction","_route":"homepage"},"request_uri":"http://conan.dev/app_dev.php/","method":"GET"} [] [2016-10-11 14:23:04] request.CRITICAL: Uncaught PHP Exception Symfony\Component\Debug\Exception\ContextErrorException: "Warning: SessionHandler::read(): Session data file is not created by your uid" at /var/www/conan/var/cache/dev/classes.php line 366 {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\ContextErrorException(code: 0): Warning: SessionHandler::read(): Session data file is not created by your uid at /var/www/conan/var/cache/dev/classes.php:366)"} []

これがセッション関連の問題のように見えるので、Symfonyのドキュメントで Session Management を参照しました。状態:

Symfonyセッションはphp.iniディレクティブsession.auto_start = 1と互換性がありません。このディレクティブはphp.ini、webserverディレクティブ、または.htaccessでオフにする必要があります。

_session.auto_start = 0_は_php.ini_にあり、ファイルはユーザーとグループrootによって所有されています:

_$ ls -lta /etc/php/7.1/fpm/php.ini -rw-r--r-- 1 root root 70584 Sep 30 07:29 /etc/php/7.1/fpm/php.ini_

Symfonyのドキュメントの指示に従って_.htaccess_(DocumentRootに配置)を作成しようとしましたが、エラーは続きます。

解決策を探すためにいくつかのスレッドと質問を検索しましたが、何も見つかりませんでした。これの原因は何ですか?

25
marcusnjones

編集config/config.ymlおよび置換save_path: "%kernel.root_dir%/../var/sessions/%kernel.environment%" with save_path: /var/lib/php/sessionsエラーを修正しました。

スペースを自動的にタブに変換するエディター/ IDEを使用する場合は、変更を保存する前にその機能を無効にしてください。そうしないと、「有効なYAMLを含まない」エラーが発生する可能性があります。

50
marcusnjones

同じ問題がありました。私のために働いた修正は、var/sessions所有者をwww-data:www-dataに変更することです(php-fpmサブプロセスの同じユーザー/グループ):

Sudo chown -R www-data:www-data var/sessions/
18
Takman

開発環境でのみ発生するトラブルのprod設定の変更を避ける

Vagrant(PHP-FPM 7 + Nginx)を同期フォルダー(/ vagrant〜デフォルト)で使用すると同じ問題が発生しました

置くだけで解決

    session:
        save_path: '/tmp'

on config_dev.yml inside frameworkエントリ

WebserverとPHPが許可の問題なく読み書きできる場所を選択してください。

15
Marcos Regis

Magento 2がこの警告を生成する場合、

ちょうどdeletevar/sessionフォルダーとそのfixed内に既に存在するセッション。

8
Vinith

同様の問題があり、ブラウザのキャッシュと保存されたデータをクリアすると問題が解決しました。

On chrome and opera以下を行う必要があります。

Developer tools > Application > Clear Storage > Clear Site Data
5
Jesus Rodriguez

私の場合、*ブラウザのCookieを削除すると問題が修正されました。上記の手順を何も実行せず、アクセス許可を変更しようとしましたが、それは問題ではありませんでした。 magentoで問題に直面しました。

3

Webユーザーとセッションフォルダー内のコンテンツの所有者は異なるため、セッションパスに書き込むことはできません。

解決策は、/ varまたは/ var/sessions /所有権をWebユーザーに設定することです。

chown Apache:apache/var/-R *または:chown www-data:www-data/var/-R *

ここでは、最高評価の応答は実際には最良の応答ではありません。

1
D Hersch

同期フォルダーにNFSを使用している場合、その中のすべてのファイルのUIDとGIDは、Vagrantを実行しているHostユーザーのUIDとGIDになります、ゲストのvagrantユーザーのUIDおよびGIDと一致しない場合があります。たとえば、私は持っています:

-rw-r--r--  1  501 dialout 5.1K Oct 29 15:14 Vagrantfile

501はMac上のユーザーのUIDであり、対応するユーザーはゲストにありません。 dialoutは、Mac上の私のプライマリグループであるstaffグループに一致するゲスト上のグループです。

同期フォルダー内のすべてのファイルの読み取りと書き込みのアクセス許可がありますが、PHPがセッションファイルの所有者のUIDを確認すると、PHPが実行されているユーザーと一致せず、セキュリティ対策としてのアクセス。

vagrant-bindfs プラグインを使用して、これを回避できます。

vagrant-bindfs

VMのbindfsマウントを自動化するVagrantプラグイン。これにより、ファイルの所有者、グループ、およびアクセス許可を変更でき、たとえば、NFS共有アクセス許可の問題を回避できます。

私に合ったものは次のとおりです。

  • vagrant plugin install vagrant-bindfsを実行します
  • Vagrantfileで:

    config.vm.synced_folder '.', '/vagrant', disabled: true
    config.vm.synced_folder '.', '/vagrant-nfs', type: 'nfs'
    
    config.bindfs.bind_folder '/vagrant-nfs', '/vagrant'
    
  • vagrant reloadを実行します

そしてそれは動作します:

-rw-r--r--  1 vagrant vagrant 5.1K Oct 29 15:45 Vagrantfile

Symfony 3に基づいたPIMCOREを使用しています。この問題を修正するために、ブラウザーのキャッシュをクリアしました。

これが役立つことを願っています。

0
Faiyaz Alam