반응형
1. 문제 발생
호스팅을 사용하다 보니까 FileHandler를 사용해서 세션을 남기는데 좀 제약이 있었다.
모든 페이지에서 그러는 것은 아닌데 일부 페이지에서 다음으로 시작하는 오류가 나왔다.
Fatal error: Uncaught ErrorException: touch(): Unable to create file ci_sessions/ci_sessionfe6rr2vjkfvoak7t4gufs2g3a7bijprr because No such file or directory in /vendor/codeigniter4/framework/system/Session/Handlers/FileHandler.php:199
저 FileHandler.php 에 가보면 아래와 같은 코드인데, 권한 문제로 보인다.
데이터베이스에 세션을 남기는 방식은 많이 사용되기 때문에 그것으로 변경하기로 했다.
if ($this->fingerprint === md5($data)) {
return ($this->fileNew) ? true : touch($this->filePath . $id);
}
2. 문제 해결
방법은 .env 파일에서 설정을 손봐주는 것이다.
아래에 보듯이 sessionDriver를 DatabaseHandler로 변경해 주고, sessionSavePath를 ci_sessions로 변경해 준다.
# app.sessionDriver = 'CodeIgniter\Session\Handlers\FileHandler'
app.sessionDriver = 'CodeIgniter\Session\Handlers\DatabaseHandler'
app.sessionCookieName = 'ci_session'
app.sessionExpiration = 7200
# app.sessionSavePath = null
app.sessionSavePath = 'ci_sessions'
app.sessionMatchIP = false
app.sessionTimeToUpdate = 300
app.sessionRegenerateDestroy = false
이제 Fatal 오류 없이 사용가능하다.
3. 메뉴얼 참고
https://codeigniter4.github.io/userguide/libraries/sessions.html?#databasehandler-driver
이 글은 필자가 분석, 공부하면서 작성한 포스트입니다.
잘못된 부분에 대해 알려주시면 수정하도록 하겠습니다.
728x90
'Programming > PHP' 카테고리의 다른 글
php + jquery(ajax) + json 기본 (0) | 2023.01.31 |
---|---|
php8.0.2 + ciboard + dompdf + 한글폰트적용 (0) | 2023.01.21 |
[코드이그나이터] 쿼리 찍어보기 (0) | 2022.12.09 |
[코드이그나이터] 리스트, 페이징 추가, 페이징 레이아웃 변경하기 (0) | 2022.11.15 |
[코드이그나이터] redirect 사용하기 (0) | 2022.11.14 |
댓글