AWS에서 Laravel 양식을 보낼 수 없습니다.
EC2
docker-compose up -d
에서 시작하여 웹 사이트를 방문한 후표시되지만 로그인 폼과 로그인 폼을 보내면 이렇게 됩니다.
처리하기가 상당히 힘들기 때문에 기록해야 한다.
환경
Mac OS Catalina 10.15.4
PHP: 7.2.24
Laravel: 5.5.48
Docker: 19.3.6
Docker-compose: 1.16.1
AWS: AMI: Amazon Linux2
EC2: t2.micro(무료 파일)
무슨 뜻이야?
그림 문자의 뜻은 "이 페이지가 이미 기한이 지났으니 업데이트해 주십시오."이다.
이게 나올 때 CSRF 영패가 만료되는 경우가 많다고 합니다.
어?회의가 끝날 때까지 놔두지 않았지만...
시도해 본 일
세션의 유효 시간을 확인합니다.
Laravel.env
파일에서SESSION_LIFETIME=120
문서 레지스트리에 항목을 추가합니다.(분)session.php
에도 설명이 있고, .env
파일에 대한 설명이 우선인 것 같습니다.
하지만 내 상황은 그렇게 내버려두지 않았다.
ssh로 로그인하여 EC2 시간대를 확인합니다.
[ec2-user@ ... ]$ date
2020年 6月 6日 土曜日 xx:xx:xx UTC
그렇구나.UTC죠?
그러니까 시간 차이가 나서 세션이 끊겼다는 거야?
참조이 문장 시간대 변경.[ec2-user@ ... ]$ date
2020年 6月 6日 土曜日 xx:xx:xx JST
JST가 되었습니다.
동작을 재확인하다.
...변하지 않다.
컨테이너 안에서도 시간대를 확인해 보세요.
$ docker exec -it [コンテナ名] bash
/var/www# date
Sat Jun 6 xx:xx:xx UTC 2020
아이고, UTC네.그게 이유인가요?
이 문장
참고로 docker-compose.yml
내력 기술로 시간대에 비틀어 넣으세요.
docker-compose.yml...
environment:
TZ: 'Asia/Tokyo'
...
다시 확인해 볼게요./var/www# date
Sat Jun 6 xx:xx:xx JST 2020
변했네.이렇게 해도 돼요?
안돼.
CSRF 토큰에 대한 설명이 누락되었는지 확인합니다.
이거 패턴으로 많이 나온 것 같은데.표에 이 기술 누락이 있는지 확인하세요.Laravel 5.5 以前
{{ csrf_field() }}
Laravel 5.6 から
@csrf
작업 공간의 가장자리에 있다.잘 썼어요.스스로 할 수 없다.
하지만 그것도 이유가 아니다.
세션 드라이버를 쿠키로 설정하십시오.
“The page has expired due to inactivity” - Laravel 5.5
stackoverflow에 이런 보도가 있습니다.
여기 댓글에 의하면.
"세션 드라이버를 파일로 설정하면 storage_path 파티션에 표시되는 경우가 있습니다."
그런 것 같습니다.
세션 드라이버
세션 드라이버는 각 요청된 세션 데이터를 어디에 저장할지 결정합니다.
예..env
SESSION_DRIVER=file
권한을 변경했으면 좋겠다고 생각했는데 기타 문장 많은 분들이 말씀하셨잖아요. 확실히 그렇게 생각해요. 참고하면서 공식 일본어 번역 페이지SESSION_DRIVER=cookie
에서 설명한 대로 해당 매개변수의 값을 수정합니다.
이렇게 되면 드디어 움직인다.
그러나 현지에서 오류가 발생하지 않았습니다. 왜요?
AWS로 옮기면 변경되나요?
이유를 아는 사람이 있으면 꼭 알려주세요.
참고문
[Linux] 시간대(Timezone) 변경 사항
Docker 컨테이너의 시간대 변경 방법
“The page has expired due to inactivity” - Laravel 5.5
Laravel 5.3 - TokenMismatchException in VerifyCsrfToken.php line 68:
Laravel5.5HTTP 세션
많이 배웠어요.감사합니다.
Reference
이 문제에 관하여(AWS에서 Laravel 양식을 보낼 수 없습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ama_keshi/items/f76793379b1016434720
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
그림 문자의 뜻은 "이 페이지가 이미 기한이 지났으니 업데이트해 주십시오."이다.
이게 나올 때 CSRF 영패가 만료되는 경우가 많다고 합니다.
어?회의가 끝날 때까지 놔두지 않았지만...
시도해 본 일
세션의 유효 시간을 확인합니다.
Laravel.env
파일에서SESSION_LIFETIME=120
문서 레지스트리에 항목을 추가합니다.(분)session.php
에도 설명이 있고, .env
파일에 대한 설명이 우선인 것 같습니다.
하지만 내 상황은 그렇게 내버려두지 않았다.
ssh로 로그인하여 EC2 시간대를 확인합니다.
[ec2-user@ ... ]$ date
2020年 6月 6日 土曜日 xx:xx:xx UTC
그렇구나.UTC죠?
그러니까 시간 차이가 나서 세션이 끊겼다는 거야?
참조이 문장 시간대 변경.[ec2-user@ ... ]$ date
2020年 6月 6日 土曜日 xx:xx:xx JST
JST가 되었습니다.
동작을 재확인하다.
...변하지 않다.
컨테이너 안에서도 시간대를 확인해 보세요.
$ docker exec -it [コンテナ名] bash
/var/www# date
Sat Jun 6 xx:xx:xx UTC 2020
아이고, UTC네.그게 이유인가요?
이 문장
참고로 docker-compose.yml
내력 기술로 시간대에 비틀어 넣으세요.
docker-compose.yml...
environment:
TZ: 'Asia/Tokyo'
...
다시 확인해 볼게요./var/www# date
Sat Jun 6 xx:xx:xx JST 2020
변했네.이렇게 해도 돼요?
안돼.
CSRF 토큰에 대한 설명이 누락되었는지 확인합니다.
이거 패턴으로 많이 나온 것 같은데.표에 이 기술 누락이 있는지 확인하세요.Laravel 5.5 以前
{{ csrf_field() }}
Laravel 5.6 から
@csrf
작업 공간의 가장자리에 있다.잘 썼어요.스스로 할 수 없다.
하지만 그것도 이유가 아니다.
세션 드라이버를 쿠키로 설정하십시오.
“The page has expired due to inactivity” - Laravel 5.5
stackoverflow에 이런 보도가 있습니다.
여기 댓글에 의하면.
"세션 드라이버를 파일로 설정하면 storage_path 파티션에 표시되는 경우가 있습니다."
그런 것 같습니다.
세션 드라이버
세션 드라이버는 각 요청된 세션 데이터를 어디에 저장할지 결정합니다.
예..env
SESSION_DRIVER=file
권한을 변경했으면 좋겠다고 생각했는데 기타 문장 많은 분들이 말씀하셨잖아요. 확실히 그렇게 생각해요. 참고하면서 공식 일본어 번역 페이지SESSION_DRIVER=cookie
에서 설명한 대로 해당 매개변수의 값을 수정합니다.
이렇게 되면 드디어 움직인다.
그러나 현지에서 오류가 발생하지 않았습니다. 왜요?
AWS로 옮기면 변경되나요?
이유를 아는 사람이 있으면 꼭 알려주세요.
참고문
[Linux] 시간대(Timezone) 변경 사항
Docker 컨테이너의 시간대 변경 방법
“The page has expired due to inactivity” - Laravel 5.5
Laravel 5.3 - TokenMismatchException in VerifyCsrfToken.php line 68:
Laravel5.5HTTP 세션
많이 배웠어요.감사합니다.
Reference
이 문제에 관하여(AWS에서 Laravel 양식을 보낼 수 없습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ama_keshi/items/f76793379b1016434720
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
SESSION_LIFETIME=120
[ec2-user@ ... ]$ date
2020年 6月 6日 土曜日 xx:xx:xx UTC
[ec2-user@ ... ]$ date
2020年 6月 6日 土曜日 xx:xx:xx JST
$ docker exec -it [コンテナ名] bash
/var/www# date
Sat Jun 6 xx:xx:xx UTC 2020
...
environment:
TZ: 'Asia/Tokyo'
...
/var/www# date
Sat Jun 6 xx:xx:xx JST 2020
Laravel 5.5 以前
{{ csrf_field() }}
Laravel 5.6 から
@csrf
.env
SESSION_DRIVER=file
SESSION_DRIVER=cookie
[Linux] 시간대(Timezone) 변경 사항
Docker 컨테이너의 시간대 변경 방법
“The page has expired due to inactivity” - Laravel 5.5
Laravel 5.3 - TokenMismatchException in VerifyCsrfToken.php line 68:
Laravel5.5HTTP 세션
많이 배웠어요.감사합니다.
Reference
이 문제에 관하여(AWS에서 Laravel 양식을 보낼 수 없습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ama_keshi/items/f76793379b1016434720텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)