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
に配置)を作成しようとしましたが、エラーは続きます。
解決策を探すためにいくつかのスレッドと質問を検索しましたが、何も見つかりませんでした。これの原因は何ですか?
編集config/config.yml
および置換save_path: "%kernel.root_dir%/../var/sessions/%kernel.environment%"
with save_path: /var/lib/php/sessions
エラーを修正しました。
スペースを自動的にタブに変換するエディター/ IDEを使用する場合は、変更を保存する前にその機能を無効にしてください。そうしないと、「有効なYAMLを含まない」エラーが発生する可能性があります。
同じ問題がありました。私のために働いた修正は、var/sessions
所有者をwww-data:www-data
に変更することです(php-fpmサブプロセスの同じユーザー/グループ):
Sudo chown -R www-data:www-data var/sessions/
開発環境でのみ発生するトラブルのprod設定の変更を避ける
Vagrant(PHP-FPM 7 + Nginx)を同期フォルダー(/ vagrant〜デフォルト)で使用すると同じ問題が発生しました
置くだけで解決
session:
save_path: '/tmp'
on config_dev.yml inside frameworkエントリ
WebserverとPHPが許可の問題なく読み書きできる場所を選択してください。
Magento 2がこの警告を生成する場合、
ちょうどdeletevar/session
フォルダーとそのfixed内に既に存在するセッション。
同様の問題があり、ブラウザのキャッシュと保存されたデータをクリアすると問題が解決しました。
On chrome and opera以下を行う必要があります。
Developer tools > Application > Clear Storage > Clear Site Data
私の場合、*ブラウザのCookieを削除すると問題が修正されました。上記の手順を何も実行せず、アクセス許可を変更しようとしましたが、それは問題ではありませんでした。 magentoで問題に直面しました。
Webユーザーとセッションフォルダー内のコンテンツの所有者は異なるため、セッションパスに書き込むことはできません。
解決策は、/ varまたは/ var/sessions /所有権をWebユーザーに設定することです。
chown Apache:apache/var/-R *または:chown www-data:www-data/var/-R *
ここでは、最高評価の応答は実際には最良の応答ではありません。
同期フォルダーに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を使用しています。この問題を修正するために、ブラウザーのキャッシュをクリアしました。
これが役立つことを願っています。