[잡담] PHP 8.0으로 텍스트큐브 돌리기
PHP 8.0 정식판
텍스트큐브 정식판(1.10.10)이 나온 때는 2016년이 마지막이고, 2018년 전반기까지는 텍스트큐브 프로그램 코드가 고쳐지고 있었다. 하지만 그 뒤에 공식 프로그램 개발은 끊어진 상태이다.
PHP는 11월 26일에 8.0 정식판이 나왔지만, 텍스트큐브 정식판으로 문제 없이 쓸 수 있는 PHP 판은 7.1에 머무르고 있다.
텍스트큐브 1.10.10을 기준으로 보면, PHP 7.2에서 라인(줄글) 기능이 작동하지 않고 PHP 7.3에서는 세션 인증 기능에서부터 문제가 생긴다. PHP 7.2까지는 프로그램 내용을 조금만 고치면 잘 작동하지만,(https://pat.im/1164) PHP 7.3에서는 잘 작동하게 하려면 고칠 내용이 많았다.(https://pat.im/1192, https://pat.im/1199) PHP 7.4은 7.3과 크게 다른 점이 없다.
PHP 8.0에서는 PHP 7.3에서보다 더 많은 오류를 내뿜는다. PHP 7.3에서는 관리자 인증이 잘못 되는 게 큰 문제였다면, PHP 8.0에서는 글쓰기와 덧글 달기가 안 되는 것이 크게 와닿는 문제이다.
- 글쓰기가 안 됨 (관리자)
("저장하지 못했습니다."가 뜸) - 덧글 쓰기가 안 됨 (관리자, 손님)
("Connection refused." 뜸) - 마우스 딸깍을 통한 상태 전환이 안 됨 (관리자)
(글의 비공개/공개 상태 전환 등) - 관리자 화면에서 뜨지 않는 항목/화면 있음
(플러그인 설정 등)
화면이 안 뜨게 하는 중대 오류(fatal error)와 기능이 작동하지 않는 문제들은 대체로 PHP 오류 로그를 보고 어렵지 않게 고칠 수 있었지만, 글쓰기가 안 되는 것은 디버그 안내가 뜨지 않아서 원인을 찾는 것부터 어려웠다. 글쓰기가 안 된 것은 PHP 8.0에서 까다로워진 변수 자료형 해석 때문에 POST 방식으로 넘겨받는 내부값 가운데 숫자형(number)이 자체 유효성 검사를 통과하지 못하기 때문인 것 같다.
묵은 문제들과 끼우개
PHP 8.0에서 작동하지 않는 기능들 가운데 PHP 7.× 때부터 문제가 있었던 것도 있다.
- 데이터 백업 / 데이터 복원 / 데이터 교정이 되지 않음
- 플러그인 설정 백업 화면이 뜨지 않고 디버그 오류 있음
(일부 플러그인 설정 복원이 잘 안 되는 것 같기도…) - '링크 관계 관리' 설정 화면이 뜨지 않음
- 스킨 자료방 이름에 '-'가 들어가면 스킨 미리보기가 되지 않음
이 기능들에 얽힌 오류들은 디버그 안내문을 보고 어렵지 않게 고칠 수 있는 것이 많다. 하지만 쓸 일이 없거나 일부러 쓰기가 겁나는 기능은 가운데 잘 되는지를 아예 모르고 있는 것도 있을 것이다. (이를테면 블로그 내용을 싹 지우는 기능)
끼우개 쪽에도 미리보기 그림을 만들어 주는 thumb_engine.php에 낮은 확률로 빈 화면이 뜨게 하는 중대 오류가 숨어 있었다. 아직 잘잘한 문제들을 보이는 대로 고치는 중이다.
일단 50군데가 넘는 곳을 고쳐서 PHP 8.0으로 돌릴 때의 큰 오류들은 잠재웠다. PHP 7.× 때부터 디버그 경고문을 보고 고쳐 와서 그나마 짐을 던 채로 시작할 수 있었지만, 고친 데가 많다 보니 되짚어서 정리하기가 쉽지 않다.
PHP 8.0 정식판이 나오기 하루 먼저 PHP 8.0 RC5으로도 잘 돌아가는 상태를 만들 수 있었는데, 그 과정에서 한동안 먹통이 되거나 덧글이 올라가지 않은 상태가 되어 방문하신 분들이 불편을 겪을 수 있는 때가 있었다.
HTML5 여러 파일 올리개
요즈음에 플래시는 제작사인 어도비에서도 2017년에 플래시 개발을 멈추었고, 올해로 지원도 끊겠다고 선언했다. 크롬 같은 웹 누비개들도 플래시를 그만 지원하겠다고 화면으로 거듭하여 알리고 있다. 그런데 텍스트큐브 정식판에서 파일 올리개(업로더)가 플래시 기반으로 돌고 있다. 플래시가 퇴출되면 텍스트큐브 블로그에 여러 그림 파일을 올리는 일을 쉽게 못할 판이다.
다행히도 이 문제에 관심을 두셨던 zvuc 님이 플래시를 쓰지 않고 HTML5으로 구현한 파일 올리개를 만들어 주셨다. (https://github.com/Needlworks/Textcube/pull/1860) 내버려 두면 텍스트큐브도 곧 퇴출될 플래시와 운명을 함께 할지도 모를 위기였는데, zvuc 님이 공개해 주신 도구 덕분에 플래시 없이도 텍스트큐브를 쓸 수 있게 되었다. 하지만 이 도구가 텍스트큐브 공식 코드에 들어가지 않아서 Github 저장소에서 파일을 받아 따로 넣어 주어야 한다.
덧글을 달아 주세요
bluo 2023/02/07 15:05 고유주소 고치기 답하기
우와..대단하십니다. 1.10.9를 쓰다가 2.0으로 업데이트 하니 로그인이 안되네요. php 7.3.3이고, 판내림을 해보고 있네요.
팥알 2023/02/07 21:26 고유주소 고치기 답하기
저는 지지난해까지는 1.10.10을 고쳐 쓰다가 지난해부터 2.0 베타3을 크게 고쳐서 쓰고 있습니다. 2.0을 손대면서부터 더욱 많은 문제들을 깊이 자주 고친 것 때문에 후유증이 있습니다. 지난해에 작업한 결과물을 공개해서 나누면 좋겠지만, 자동 설치를 비롯하여 복구하지 못한 기능들이 있고 집단이 아닌 개인이 사후 지원/작업을 하기는 버거워서 일을 더 크게 벌일 수 없는 형편입니다.
정식판으로 공개되어 있는 텍스트큐브 모든 판이 공통으로 PHP 7.3 이상에서 인증 오류가 납니다. 같은 공인 아이피에서 그 웹 누비개만 빼고 관리자 화면에 들어갈 수 있게 되는 중대한 보안 문제가 생길 수 있습니다. 정식판은 꼭 PHP 7.2 이하에서 쓰시기 바랍니다. 제가 1.10.10용으로 고쳐서 공개한 세션 처리 파일도 있지만 완벽하지는 않습니다.