안녕하세요,

항상 성능과 보안을 개선해주심에 감사드립니다.

 

다름이 아니라, 금번 당사의 서비스의 스케일을 키우기 위하여 기존의 환경(한대의 서버에서 OS+XAMP + OPC + Redis)에서 도커의 XAMPP를 사용하여 1차로 배포 후 이를 개선하고자 준비중에 있습니다.

 

XAMPP 이미지를 tomsik68/xampp:7 을 통해 컨테이너를 생성하고 정상적으로 라이믹스를 설치 하였으나

image.png

이미지와 같이 불필요한 코어 파일이 있다고 합니다.

그 리스트는 하기와 같습니다

 

번호 삭제할 파일명 유형 삭제 이유 제외
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

 

으로 실행하여 테스트 하였습니다.

 

혹여 이런 이유가 어떤 것에서 문제가 발생했는지, 이를 수정할 수 있는 방법은 있는 것인지 궁금합니다.

 

질문 읽어주시어 감사합니다.

  • Lv36

    설치하신 OS 또는 파일시스템의 대소문자 구분 문제입니다.

     

    리눅스의 경우, 절대 다수의 파일시스템에서 대소문자를 구분합니다.

    따라서 AAA.php와 aaa.php가 동시에 존재할 수 있고, 전혀 다른 파일로 취급합니다.

    aaa.php를 지워도 AAA.php에는 영향을 주지 않습니다.

     

    윈도우의 경우, AAA.php와 aaa.php가 동시에 존재할 수 없습니다.

     

    이 두 가지 패턴은 라이믹스에서 정상 인식합니다.

    리눅스에서는 공식적으로 배포하는 것과 대소문자가 다른 파일이 중복으로 존재한다면 삭제를 추천하고,

    윈도우에서는 대소문자가 다르더라도 삭제를 추천하지 않습니다.

     

    그런데 나스나 네트워크 공유폴더, 일부 특이한 (서버용으로 흔히 사용되지 않는) OS에서는

    이 구분이 어정쩡하게 적용되어서 멀쩡한 파일을 삭제 대상으로 인식하는 것 같습니다.

     

    사용하신 도커 이미지는 데비안 리눅스 기반이니, 게스트 OS의 문제는 아닐 텐데요.

    호스트 OS의 파일시스템이 특이하거나, 서로 폴더를 공유하는 방식의 문제인 것 같습니다.

  • Lv36 Lv2
    호스트 OS와 서로 폴두를 공유하면서 생기는 문제 같습니다.
    CentOS에서 도커를 실행하여 컨테이너를 적재하면 문제가 없군요...

    감사합니다 (__)