안녕하세요,
항상 성능과 보안을 개선해주심에 감사드립니다.
다름이 아니라, 금번 당사의 서비스의 스케일을 키우기 위하여 기존의 환경(한대의 서버에서 OS+XAMP + OPC + Redis)에서 도커의 XAMPP를 사용하여 1차로 배포 후 이를 개선하고자 준비중에 있습니다.
XAMPP 이미지를 tomsik68/xampp:7 을 통해 컨테이너를 생성하고 정상적으로 라이믹스를 설치 하였으나
이미지와 같이 불필요한 코어 파일이 있다고 합니다.
그 리스트는 하기와 같습니다
번호 삭제할 파일명 유형 삭제 이유 제외 1 common/framework/cache.php 파일 대소문자 구분 변경 제외 2 common/framework/calendar.php 파일 대소문자 구분 변경 제외 3 common/framework/config.php 파일 대소문자 구분 변경 제외 4 common/framework/datetime.php 파일 대소문자 구분 변경 제외 5 common/framework/db.php 파일 대소문자 구분 변경 제외 6 common/framework/debug.php 파일 대소문자 구분 변경 제외 7 common/framework/drivers/cacheinterface.php 파일 대소문자 구분 변경 제외 8 common/framework/drivers/mailinterface.php 파일 대소문자 구분 변경 제외 9 common/framework/drivers/pushinterface.php 파일 대소문자 구분 변경 제외 10 common/framework/drivers/smsinterface.php 파일 대소문자 구분 변경 제외 11 common/framework/exception.php 파일 대소문자 구분 변경 제외 12 common/framework/exceptions/dberror.php 파일 대소문자 구분 변경 제외 13 common/framework/exceptions/featuredisabled.php 파일 대소문자 구분 변경 제외 14 common/framework/exceptions/invalidrequest.php 파일 대소문자 구분 변경 제외 15 common/framework/exceptions/mustlogin.php 파일 대소문자 구분 변경 제외 16 common/framework/exceptions/notpermitted.php 파일 대소문자 구분 변경 제외 17 common/framework/exceptions/queryerror.php 파일 대소문자 구분 변경 제외 18 common/framework/exceptions/securityviolation.php 파일 대소문자 구분 변경 제외 19 common/framework/exceptions/targetnotfound.php 파일 대소문자 구분 변경 제외 20 common/framework/filters/filecontentfilter.php 파일 대소문자 구분 변경 제외 21 common/framework/filters/filenamefilter.php 파일 대소문자 구분 변경 제외 22 common/framework/filters/htmlfilter.php 파일 대소문자 구분 변경 제외 23 common/framework/filters/ipfilter.php 파일 대소문자 구분 변경 제외 24 common/framework/filters/mediafilter.php 파일 대소문자 구분 변경 제외 25 common/framework/formatter.php 파일 대소문자 구분 변경 제외 26 common/framework/helpers/confighelper.php 파일 대소문자 구분 변경 제외 27 common/framework/helpers/dbhelper.php 파일 대소문자 구분 변경 제외 28 common/framework/helpers/dbresulthelper.php 파일 대소문자 구분 변경 제외 29 common/framework/helpers/dbstmthelper.php 파일 대소문자 구분 변경 제외 30 common/framework/helpers/sessionhelper.php 파일 대소문자 구분 변경 제외 31 common/framework/image.php 파일 대소문자 구분 변경 제외 32 common/framework/korea.php 파일 대소문자 구분 변경 제외 33 common/framework/lang.php 파일 대소문자 구분 변경 제외 34 common/framework/mail.php 파일 대소문자 구분 변경 제외 35 common/framework/mime.php 파일 대소문자 구분 변경 제외 36 common/framework/pagination.php 파일 대소문자 구분 변경 제외 37 common/framework/parsers/baseparser.php 파일 대소문자 구분 변경 제외 38 common/framework/parsers/configparser.php 파일 대소문자 구분 변경 제외 39 common/framework/parsers/dbquery/columnread.php 파일 대소문자 구분 변경 제외 40 common/framework/parsers/dbquery/columnwrite.php 파일 대소문자 구분 변경 제외 41 common/framework/parsers/dbquery/condition.php 파일 대소문자 구분 변경 제외 42 common/framework/parsers/dbquery/conditiongroup.php 파일 대소문자 구분 변경 제외 43 common/framework/parsers/dbquery/emptystring.php 파일 대소문자 구분 변경 제외 44 common/framework/parsers/dbquery/groupby.php 파일 대소문자 구분 변경 제외 45 common/framework/parsers/dbquery/indexhint.php 파일 대소문자 구분 변경 제외 46 common/framework/parsers/dbquery/navigation.php 파일 대소문자 구분 변경 제외 47 common/framework/parsers/dbquery/nullvalue.php 파일 대소문자 구분 변경 제외 48 common/framework/parsers/dbquery/orderby.php 파일 대소문자 구분 변경 제외 49 common/framework/parsers/dbquery/query.php 파일 대소문자 구분 변경 제외 50 common/framework/parsers/dbquery/table.php 파일 대소문자 구분 변경 제외 51 common/framework/parsers/dbquery/variablebase.php 파일 대소문자 구분 변경 제외 52 common/framework/parsers/dbqueryparser.php 파일 대소문자 구분 변경 제외 53 common/framework/parsers/dbtable/column.php 파일 대소문자 구분 변경 제외 54 common/framework/parsers/dbtable/constraint.php 파일 대소문자 구분 변경 제외 55 common/framework/parsers/dbtable/index.php 파일 대소문자 구분 변경 제외 56 common/framework/parsers/dbtable/table.php 파일 대소문자 구분 변경 제외 57 common/framework/parsers/dbtableparser.php 파일 대소문자 구분 변경 제외 58 common/framework/parsers/editorcomponentparser.php 파일 대소문자 구분 변경 제외 59 common/framework/parsers/langparser.php 파일 대소문자 구분 변경 제외 60 common/framework/parsers/moduleactionparser.php 파일 대소문자 구분 변경 제외 61 common/framework/parsers/moduleinfoparser.php 파일 대소문자 구분 변경 제외 62 common/framework/parsers/xmlrpcparser.php 파일 대소문자 구분 변경 제외 63 common/framework/password.php 파일 대소문자 구분 변경 제외 64 common/framework/push.php 파일 대소문자 구분 변경 제외 65 common/framework/router.php 파일 대소문자 구분 변경 제외 66 common/framework/security.php 파일 대소문자 구분 변경 제외 67 common/framework/session.php 파일 대소문자 구분 변경 제외 68 common/framework/sms.php 파일 대소문자 구분 변경 제외 69 common/framework/storage.php 파일 대소문자 구분 변경 제외 70 common/framework/timer.php 파일 대소문자 구분 변경 제외 71 common/framework/ua.php 파일 대소문자 구분 변경 제외 72 common/framework/url.php 파일 대소문자 구분 변경 제외 73 modules/member/controllers/device.php 파일 대소문자 구분 변경 제외
처음에는 신규 버전을 라이믹스로 받았는데 혹여 새로운 기능으로 제공되는 것인 줄 알았으나, 이를 통해 파일을 모두 삭제하는 경우
"Error #0 "Class 'Rhymix\Framework\Filters\FilenameFilter' not found" in addons/autolink/autolink.addon.php on line 14 (via classes/frontendfile/FrontEndFileHandler.class.php on line 689)"
에러가 표출되며 그 이후 새로고침시
Warning: require_once(/opt/lampp/htdocs/common/framework/Cache.php): failed to open stream: No such file or directory in /opt/lampp/htdocs/common/autoload.php on line 130
Fatal error: require_once(): Failed opening required '/opt/lampp/htdocs/common/framework/Cache.php' (include_path='.:/opt/lampp/lib/php') in /opt/lampp/htdocs/common/autoload.php on line 130
에러가 표출되며 라이믹스 코어중 일부가 삭제된 것으로 판단됩니다.
Docker 컨테이너 실행시 사용한 Run 스크립트는
docker run --hostname=192a3e989385 --mac-address=02:42:ac:11:00:02 --env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env=DEBIAN_FRONTEND=noninteractive --volume=D:\docker_disk\web_test:/opt/lampp/htdocs/ --volume=/opt/lampp/apache2/conf.d/ --volume=/var/log/apache2/ --volume=/var/log/mysql/ --volume=/www --network=bridge -p 22:22 -p 3306:3306 -p 80:80 --restart=no --label='maintainer=Tomas Jasek<tomsik68 (at) gmail (dot) com>' --runtime=runc -d tomsik68/xampp:7
으로 실행하여 테스트 하였습니다.
혹여 이런 이유가 어떤 것에서 문제가 발생했는지, 이를 수정할 수 있는 방법은 있는 것인지 궁금합니다.
질문 읽어주시어 감사합니다.
설치하신 OS 또는 파일시스템의 대소문자 구분 문제입니다.
리눅스의 경우, 절대 다수의 파일시스템에서 대소문자를 구분합니다.
따라서 AAA.php와 aaa.php가 동시에 존재할 수 있고, 전혀 다른 파일로 취급합니다.
aaa.php를 지워도 AAA.php에는 영향을 주지 않습니다.
윈도우의 경우, AAA.php와 aaa.php가 동시에 존재할 수 없습니다.
이 두 가지 패턴은 라이믹스에서 정상 인식합니다.
리눅스에서는 공식적으로 배포하는 것과 대소문자가 다른 파일이 중복으로 존재한다면 삭제를 추천하고,
윈도우에서는 대소문자가 다르더라도 삭제를 추천하지 않습니다.
그런데 나스나 네트워크 공유폴더, 일부 특이한 (서버용으로 흔히 사용되지 않는) OS에서는
이 구분이 어정쩡하게 적용되어서 멀쩡한 파일을 삭제 대상으로 인식하는 것 같습니다.
사용하신 도커 이미지는 데비안 리눅스 기반이니, 게스트 OS의 문제는 아닐 텐데요.
호스트 OS의 파일시스템이 특이하거나, 서로 폴더를 공유하는 방식의 문제인 것 같습니다.