[잡담] PHP 8.0으로 텍스트큐브 돌리기

PHP 8.0 정식판

  텍스트큐브 정식판(1.10.10)이 나온 때는 2016년이 마지막이고, 2018년 전반기까지는 텍스트큐브 프로그램 코드가 고쳐지고 있었다. 하지만 그 뒤에 공식 프로그램 개발은 끊어진 상태이다.

  PHP는 11월 26일에 8.0 정식판이 나왔지만, 텍스트큐브 정식판으로 문제 없이 쓸 수 있는 PHP 판은 7.1에 머무르고 있다.

PHP 8.0.0 Released!

  텍스트큐브 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 저장소에서 파일을 받아 따로 넣어 주어야 한다.

텍스트큐브 글 편집기 (파일/그림 넣기)
글 걸기 주소 : 이 글에는 글을 걸 수 없습니다.

덧글을 달아 주세요

  1. 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용으로 고쳐서 공개한 세션 처리 파일도 있지만 완벽하지는 않습니다.