[잡담] 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 저장소에서 파일을 받아 따로 넣어 주어야 한다.

덧글을 달아 주세요