조금 전, php 판올림이 있길래 아무 생각없이 해버렸더니.. 제목과 같은 오류가 발생하고야 말았다.
apache, php 최신판 LaunchPad 를 추가해놨더니 이런 일이 생겨버렸다.
서버에선 그냥 제공되는 환경을 쓰는게 제일 좋을 수도 있는데..
아무튼 이미 엎지러진 물. 해결을 위해 이리 저리 파보기 시작했다.
먼저 시작한 건 php.info() 였는데, 사실 여기에 답이 대문짝만하게 있었는데 그걸 보지 못하고 넘겨버렸더랬다.
php.info() 에서 보여진 php 는 8.0.x 였다.
헌데, 서버로 접속하여 php -v
해본 결과는 8.1.1 이었다. 이렇단 얘기는, 아파치 설정이 php8.0 으로 돼 있단 건데, 그걸 제대로 파악하지 못했었다.
아무튼, 8.0 으로 나온 phpinfo 에서 보니 mysql 도 없고, 대부분 플럭인들이 설치돼 있지 않았다고 나왔다.
하여.. 임시방편으로 php8.0-mysql
꾸러미를 설치해봤는데..
제목에 있는 오류는 사라졌지만, 사이트가 정상 작동하질 않았다.
흠. 이거 근본 문제는 이게 아니로구나.. 하는 생각이 스쳐지나갔다. (예전 같으면 살짝 쫄았을텐데, 이젠 뭔가 해법이 있겠거니.. 하는 생각이 드는 걸 보면, 나도 경험은 꽤 쌓인 모양이다.)
그러다가, 그제서야 php 판본이 아파치에서와, 커맨드 라인에서 달리 보인다는 사실을 깨달았다.
7.4 에서 8.x 로 넘어오면서 판올림 시에 뭔가가 꼬인 모양이다.
이 문제를 해결하기 위해서.. /etc/apache2/mods-enabled
디렉토리를 살펴봤다. (우분투 기준)
/etc/apache2/mods-enabled$ ll lrwxrwxrwx 1 root root 29 2022-01-19 14:54 php8.0.conf -> ../mods-available/php8.0.conf lrwxrwxrwx 1 root root 29 2022-01-19 14:54 php8.0.load -> ../mods-available/php8.0.load
문제 확인!
php8.1 이 설치가 되었고, 모든 모듈도 8.1 로 바뀌었으나 정작 아파치엔 여전히 8.0 으로 설정되었기에 이런 불상사가 벌어졌다.
따라서, 저 심볼릭링크를 지우고, 8.1 로 바꿔주면 된다. apache 명령을 써도 되겠으나, 어떻게 하는지 찾아봐야 하므로, 그냥 단순히 ln -s
로 작업해주고, apache 서버를 재시동했다. (이 바보.. 예전에 써놓은게 있었는데..)
/etc/apache2/mods-enabled$ sudo ln -s ../mods-available/php8.1.conf . /etc/apache2/mods-enabled$ sudo ln -s ../mods-available/php8.1.load . $ sudo systemctl restart apache2.service
위처럼 단순무식하게 해도 되긴 하지만..
$ sudo a2dismod php8.0 $ sudo a2enmod php8.1 $ sudo systemctl restart apache2
이게 ‘배운 자’들의 방법이다. (사실, 결과는 같다.)
끝.
분쟁은 사라지고 평화가 다시 도래했다.
다만, 문제를 해결하기 위해 검색하던 중, 현재 워드프레스는 php 8.1 과 완벽호환되지는 않는다는 사실을 알게 되었다. WordPress 에선 php7.3 이상, 즉 php7 대를 권장하는 듯?
그러나 어쩌랴. 지금 와서 돌아가기는 너무 번거롭고.
적어도 내 환경에선 8.0 에서도 별 문제는 없었기에, 8.1 도 잘 돌아가리라 기대하는 수밖에.
** 2022.12 현재, 최소 권장 php는 7.4 이고 8에서도 무리는 없다.