본문으로 바로가기

가끔 phpMyAdmin에서 "Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly" 와 같은 에러 메세지가 뜨면서 접근 할 수 없는 경우가 발생한다.

이 문제는 클라이언트(브라우저)측의 쿠키(cookies) 문제이거나 서버측의 세션(session)파일이 저장되는 곳의 퍼미션(권한) 혹은 소유권(ownership)과 관련된 문제일 경우가 많다.

아래와 같은 에러가 발생했을 것이다.

phpMyAdmin - Error

Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly.

클라이언트(브라우저)측에서 해야 할일

이 에러가 발생했을 경우 웹브라우저의 쿠키를 삭제함으로써 간단히 해결되는 경우가 있다.

IE 사용자의 경우 도구(톱니바퀴모양) -> 인터넷 옵션 -> 일반탭의 검색기록에서 삭제 -> 확인 과 같은 순서다.

크롬 사용자의 경우 설정 -> 페이지 하단의 고급 설정 표시 -> 개인정보 부분의 인터넷 사용정보 삭제 -> 쿠키 및 ... 삭제 체크 -> 인터넷 사용정보 삭제 와 같은 순이다.

서버측에서 해야 할일

브라우저에서 쿠키를 삭제하였는데도 같은 에러가 발생했을때는 서버측의 설정을 살펴보아야 한다.

php.ini 파일을 들여다보면 세션파일의 저장위치는 기본적으로 아래와 같다.

session.save_path = "/var/lib/php/session" 

또는 세션파일의 저장위치를 /tmp 로 사용하는 경우도 있다.

session.save_path = "/tmp" 

이 세션파일의 디렉토리 퍼미션과 소유권을 살펴보자

ls -la /var/lib/php

  drwxrwx---   2 root apache 4096 2013-07-12 07:16 session
ls -la /var/lib/php/session

  -rw------- 1 apache apache 13842 2013-07-12 06:14 sess_2hp41jsraac5dei7nn93c5mre3ucgvgj

위에서 보는 바와 같이 세션 디렉토리는 User root / Group apache 의 소유권을 가지고 있다. 세션 파일은 User apache / Group apache 의 소유권을 가지고 있다.

추측컨데, CentOS 6.4의 경우 yum으로 아파치를 설치시 httpd.conf의 설정중에 User와 Group 지시자의 기본 설정값이 apache인 것을 확인할 수 있다. 아파치 설치시 apache 유저와 그룹이 함께 생성된다. 그런데 이를 nobody로 변경하는 경우가 많은데 여기에 문제의 포인트가 있지 않나 생각한다.

phpmyadmin의 설정파일을 살펴보자.

ls -la /usr/share/phpmyadmin | grep config.inc.php

  -rw-r-----   1 root apache   1694 2013-07-12 07:07 config.inc.php

예상한대로 이 파일역시 소유그룹은 apache로 되어 있고 그 소유그룹에 읽기 권한이 있다. 즉, httpd.conf에서 User / Group을 변경하였다면 그 변경한 이름대로 위 파일들의 소유권한을 모두 변경해야 할 터이다.

또한, 이미 생성되어 있는 세션파일들도 소유권을 변경하거나 삭제하고 서비스를 재시작 하여야 할것으로 예상된다. 그 이외에도 변경해야 할 것이 있는지 알지 못하고 세션파일을 삭제함으로써 발생하는 문제가 무엇이 있는지는 모르겠다.

만일 아파치 설정에서 User / Group 을 nobody로 변경하였다면 아래와 같이 실행하자.

chown -R nobody:nobody /var/lib/php/session 

혹은 세션파일의 접근권한을 누구에게나 주는 것이다.

chmod 0777 /var/lib/php/session

서비스를 재시작하고 결과를 다시 살펴보자.

service httpd restart

만약 같은 문제가 발생한다면 이번에는 같은 방법으로 phpmyadmin의 config.inc.php의 소유권도 변경해보자.

phpmyadmin의 경로는 자신이 설치한 경로를 입력하도록 하자

chown root:nobody /usr/share/phpmyadmin/config.inc.php

다시 서비스를 재시작하고 결과를 확인해보자. 해결되었기를 바란다...