Coder Social home page Coder Social logo

xpressengine / xpressengine Goto Github PK

View Code? Open in Web Editor NEW
225.0 28.0 93.0 77.42 MB

PHP Open Source CMS

Home Page: https://www.xpressengine.com

License: Other

PHP 62.84% HTML 25.61% Vue 1.39% Blade 10.16%
php laravel-framework xpressengine cms cms-framework site-builder site-generator

xpressengine's Introduction

XpressEngine 3

License Build Status Scrutinizer Code Quality Code Coverage

XpressEngine3(XE3) is a service friendly CMS based on a Laravel framework. It provides quick feedback and flexible expansion through various bundle systems. With XE3, you can create the future of the web.

Based on ModernPHP

XE3 is based on a modern PHP including Composer. It provides autoloading through PSR and a well tested code base. For more information, please refer to the manual.

Top of Laravel Framework

Laravel is one of the most modern PHP frameworks and the most popular among them. It has a flexible structure as well as an abundance of verified sources. Basing itself on the Laravel framework, XE3 provides all Laravel functions along with independent CMS functions. For more information, please refer to the manual.

Server Requirements

  • PHP version 7.0.0 greater
  • PDO PHP Extension
  • cURL PHP Extension
  • FileInfo PHP Extension
  • GD PHP Extension
  • Mbstring PHP Extension
  • OpenSSL PHP Extension
  • Zip PHP Extension

Getting Started

To install XE3, refer to the following guide. Install guide

Maintainers

akasima Park Suhyeon Bi Kim Park Gitae HanGyeol Kim

Documentation

Support

License

Copyright 2020 Xehub Corp. https://www.xpressengine.com

"XpressEngine (XE)" is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3.0 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

Powered By

xpressengine's People

Contributors

akasima avatar akasima-pr-sender avatar bi-kim avatar darron1217 avatar findstar avatar gyorudayo avatar hann avatar highk avatar hongsic avatar iz4blue avatar jhyeon1010 avatar jihyeok avatar khongchi avatar kimyu711 avatar laeng avatar leeyoongu avatar panach avatar pers0n4 avatar planic089 avatar poj27123 avatar postman0270 avatar seungmanchoi avatar woongbin avatar xedev avatar xharpenparksuhyeon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xpressengine's Issues

cascading config 지원

xe 사용자들이 xe의 기본설정을 변경할 수 있도록 지원하려면 .env 파일을 사용하는 것만으로는 역부족임. 그래서 라라벨 4.2에서 사용되었던 cascading config 기능을 사용할 수 있도록 적용하면 좋을듯.

.env 파일의 APP_ENV 변수값과 동일한 이름을 가진 디렉토리가 /config 디렉토리에 존재할 경우, 기본 config를 덮어 씌우는 기능(cascading config)을 제공하려 함.

<em> 태그가 반영되지 않음

게시판에서 기울임체 사용시 입력되는 <em> 태그가 강제 지정되어 있어 기울임꼴 지정을 해도 똑같이 보입니다.
이는 /assets/common/css/normalize.css 에서

em{font-style: normal}

으로 초기화하고 따로 지정해주지 않아 발생하는 문제입니다.

Instance Route 로 설정한 Controller 구현 시 첫번째 parameter 문제

Route::instance() 로 설정할 때 Controller 메소드로 전달되는 첫번째 parameter 에 항상 url 의 첫번째 segment 가 전달되고 있습니다.

게시판의 slug 설정을 예로 들면 전달되는 파라메터의 첫번째 값이 slug 가 아닌 url 의 첫번째 세그먼트 입니다.

// slug 를 위한 instance route
Route::get('/{slug}', ['as' => 'slug', 'uses' => 'UserController@slug']);
public function slug($boardId, $slug)
{
    // 게시판 slug controller method 에서 arguement 출력을 위한 코드 수정
    dd(func_get_args());
// 결과
array:2 [▼
  0 => "board1"
  1 => "awfwaefwaefawef"
] 

Register interface 정리

현재 register의 interface가 명확하지 않음. register의 interface를 명확히 구분하여 사용되도록 변경할 필요가 있음.

게시판 플러그인의 create 뷰 HTML validation error

2015-11-16 21 10 07

/plugins/board/views/defaultSkin/create.blade.php의 79:87에 띄어쓰기가 되어 있지 않아 validation error가 발생합니다.

아래 코드입니다.

<a href="{{ $urlHandler->get('index', Input::except('id', 'parentId')) }}"class="bd_btn btn_cancel"><i class="xi-undo"></i> {{ xe_trans('xe::back') }}</a>

Alert 창이 닫히지 않습니다.

특정 액션을 취했을 때 나타나는 Alert(=Toast) 창을 닫으려고 해도 닫히지 않습니다.

예)

  • 플러그인을 켰습니다.
  • Item moved.

closure 형식의 config로 인해 config cache 사용 불가

라라벨의 config cache는 closure 형식의 config를 지원하지 않음.

현재 closure 형식의 값을 가진 설정이 xe.php에 존재하는데, 이로 인해 config cache를 사용할 수 없는 단점이 있음.

closure 형식을 제거하여 config cache를 사용할 수 있도록 변경해야 함.

해결방법

closure 형식의 config는 config 파일에 직접 지정하지 않고, service provider 부팅시 dynamic하게 config에 설정(config::set())하도록 변경.

페이지에서 이미지 첨부시, URL에서 /storage 사용하는 문제

페이지 편집화면, 미리보기에서의 이미지 URL

/page/file/source/84c51fd0-75bf-4dd6-9d98-d2365ccb1f0f

실제 페이지에서의 이미지 URL

/storage/app/attached/b2/87/spill_800x800_979d4219120e985e06030ea355fc885b88b39417

보안상 웹서버에서 /storage 디렉토리 접근을 차단했으므로 페이지에서만 이미지가 보이지 않습니다. (게시판은 문제없음)

참고) 제 nginx 설정 - https://gist.github.com/ibin79/c027285c8058e707fa95

사이트맵에서 2차 메뉴 세팅시...

사이트 맵에서 2차메뉴를 세팅시 1차메뉴가 바로가기도 아니고, 일반게시판으로 생성되었어도 링크를 사용할 수 없고 주소창의 URL에 #만 추가되는 문제점이 있습니다.

CSS coding convention 정리

자체적으로 포함하거나 기본 제공되는 테마, 스킨 등에서 사용되는 CSS의 class 또는 id 네이밍과 들여쓰기 사용에 대한 정리가 필요합니다.

  • .css, .scss, .sass, .less 공통으로 두 개의 공백으로 들여쓰기
  • CSS class, id에 혼용된 hyphen(-), underscore(_)를 hyphen으로 통일
  • 속성마다 줄 바꿈으로 구분
    • diff 뷰로 볼 때 어떤 항목이 변경되었는지 명확하다 : 변경된 텍스트를 가리키지 않는 뷰어가 많음
    • 실수를 방지할 수 있음 : 많은 속성 작성 시 이미 작성된 속성이 여러개 작성될 수 있음
      • selector를 한 눈에 보기 편하지만 되려 속성에 대한 구분이 어려워짐
    • 코드 충돌을 좀 더 피할 수 있음
    • 속성의 순서를 정렬하기 좋음 : http://csscomb.com
  • 불분명한 단축어 사용은 피하는 것이 좋음
    • tit(title), con(content), lst(list), inpt(input), srch(search), clse('close'의 오타? collapsed!), .bd_on(?)
    • 보편적(nav, btn, col, snb, gnb)이지 않거나 정의되지 않은 단축어 사용은 오타를 유발하거나 해석할 수 없게 합니다

MAIL_DRIVER 기본값을 mail 로 변경

설치직후 메일 발송 성공 가능성을 높이기 위하여, 기본 드라이버를 mail 로 변경했으면 합니다.

  • 국내 호스팅 환경: PHP mail() 함수 권장
  • CentOS: postfix가 기본 발송 전용으로 설치됨.
MAIL_DRIVER=mail

Plugin의 잘못된 작성으로 인한 오류에 대한 예외처리가 필요

third party에서 작성하는 plugin에 오류가 있을 경우(plugin.php나 composer.json이 형식에 맞지 않을 경우 등) 각 오류에 대한 자세하고 정확한 오류를 출력해줄 수 있어야 함.

현재 상황에서는 발생하는 예외가 직접적이지 않아서 개발자들이 오류를 찾기가 힘듦.

휴지통으로 이동한 글에 접근이 가능

글을 휴지통으로 이동해도 글 주소로 아무나 접근이 가능합니다. 의도된 것인지는 모르겠으나, 관리자 이외에는 접근이 안되어야 한다고 생각합니다.

MAIL_FROM_ADDRESS 누락으로 인한 메일 발송 실패

설치후 비밀번호 재설정 메일 발송이 안되는 문제가 있었습니다.

원인은 .env 에서 다음 2가지 항목이 누락되었기 때문인데, 설치 과정에서 입력한 관리자 주소/이름을 기본값으로 넣으면 좋을 것 같습니다.

[email protected]
MAIL_FROM_NAME=XE3

보낸 주소 누락시, 에러 메세지

local.ERROR: exception 'Swift_TransportException' with message 'Cannot send message without a sender address' in /home/xe3/public/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php:162

설치시 chmod -R 707 bootstrap/cache 누락

php artisan xe:install 설치시 storage 디렉토리의 퍼미션만 변경하고 있습니다.

이로 인해 다음 에러가 발생합니다.

$ grep ERROR storage/logs/laravel.log|more
[2015-11-26 16:24:34] local.ERROR: exception 'ErrorException' with message 'file_put_contents(/home/xe3/public/bootstrap/cache/services.json): failed to open stream: Permission denied' in /home/xe3/public/vendor/laravel/framework/src/Illuminate/Filesystem/
Filesystem.php:81
[2015-11-26 16:24:34] local.ERROR: exception 'ReflectionException' with message 'Class xe.translator does not exist' in /home/xe3/public/vendor/laravel/framework/src/Illuminate/Container/Container.php:737
[2015-11-26 16:24:34] local.ERROR: exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Uncaught exception 'ReflectionException' with message 'Class xe.translator does not exist' in /home/xe3/public/vendor/laravel/framework/src/I
lluminate/Container/Container.php:737

storage, bootstrap/cache 함께 변경되도록 개선이 필요해 보입니다.

파일 업로드 실패시, 실패 원인 로깅 필요

파일 업로드 실패시, PHP 단의 에러 메세지를 로그에 기록하지 않아 원인을 찾기 어렵습니다.

개선 전 로그

실패 원인이 안나옵니다.

[2015-11-27 12:03:03] local.ERROR: 
exception 'Xpressengine\Storage\Exceptions\InvalidFileException' with message 

'Not uploading possible file [그림.jpeg]' 

in /home/xe3/public/core/src/Xpressengine/Storage/Storage.php:169

개선 코드

로그에 $uploaded->getErrorMessage() 추가

core/src/Xpressengine/Storage/Storage.php

throw new InvalidFileException('Not uploading possible file [' . $uploaded->getClientOriginalName() . '] '. $uploaded->getErrorMessage());

개선 후 로그

upload_max_filesize 문제라는 것을 바로 파악할 수 있습니다.

[2015-11-27 12:18:45] local.ERROR:
 exception 'Xpressengine\Storage\Exceptions\InvalidFileException' with message 

'Not uploading possible file [그림.jpeg] The file "그림.jpeg" exceeds your upload_max_filesize ini directive (limit is 2048 KiB).'

 in /home/xe3/public/core/src/Xpressengine/Storage/Storage.php:169

Exception 정리

현재 XE에서 정의한 Exception들의 코드정리가 필요함.

  • exception naming 정리
  • exception message 정리

install 과정에서 localhost 입력 시 초기 사이트 접속이 안되는 문제 발생

[2015-11-16 02:15:20] local.ERROR: Xpressengine\Site\Exceptions\NotFoundSiteException: Can not find Site in /srv/XE3/core/src/Xpressengine/Site/SiteRepository.php:70
Stack trace:
#0 /srv/XE3/core/src/Xpressengine/Site/SiteHandler.php(256): Xpressengine\Site\SiteRepository->find('REMOTE ADDR')
#1 [internal function]: Xpressengine\Site\SiteHandler->get('REMOTE ADDR')

xe_site 테이블의 host를 localhost에서 REMOTE ADDR로 변경시 원활히 접속되는것 확인했습니다. installer의 수정 필요.

CSS reset 사용을 제거

assets/common/css/normalize.css 에 추가 작성된 일부 CSS reset 코드에 대한 사용을 제거하는 것에 대해 말하고자 합니다.

참조 : https://github.com/xpressengine/xpressengine/blob/master/assets/common/css/normalize.css#L427-L436
#35 이슈를 비롯해 CSS reset은 많은 문제와 지속되는 이슈를 만들 수 있습니다. 브라우저 별 차이를 최소화하는 normalize.css 라이브러리의 사용 목적에는 동의하나 퍼블리싱의 편의를 위해 3rd party에게도 영향을 주는 CSS reset 코드의 사용은 배제하는 것이 좋아보입니다.

이러한 CSS reset은 .margin-less, .border-box 등의 헬퍼 클래스를 추가하여 적용하는 것이 혼란과 영향을 최소화하도록 개선할 수 있는 방법으로 생각됩니다.

또한, 임시 또는 편의로 작성된 a{text-decoration:none;color:#2c8beb} 등의 코드 또한 제거되는 것이 바람직해보입니다.

@gunil @LeeYoonGu

이미지 태그 포함시, 게시판 등록 에러

이미지 업로드 등으로 인해, 본문내에 이미지 태그가 포함된 경우 에러가 발생합니다.

에러

[2015-11-27 13:02:19] local.ERROR: 
exception 'ErrorException' with message 
'Directory /home/xe3/public/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer not writable, please chmod to 777'
 in /home/xe3/public/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer.php:278

임시 대응

HTMLPurifier 에서 사용할 캐시 디렉토리를 만들어주고,

mkdir -m 777 /home/xe3/public/storage/app/htmlpurifier

config/purifier.php 설정에서 캐시 경로를 직접 입력해주니, 등록됩니다.

    #'cachePath' => null,
    'cachePath' => '/home/xe3/public/storage/app/htmlpurifier',

따라서 HTMLPurifier 캐시 디렉토리 관련 정리가 필요해 보입니다.

관리자 대시보드에서 플러그인 목록이 조회되지 않음

(마크다운을 제대로 안올려서 타 이슈까지 레퍼런스되었습니다 죄송합니다.) (__)

[2015-11-16 04:24:21] local.ERROR: ErrorException: file_put_contents(/srv/XE3/storage/framework/plugins/10/ae/10ae9fc7d453b0dd525d0edf2ede7961): failed to open stream: Permission denied in /srv/XE3/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:81
Stack trace:
#0 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(2, 'file_put_conten...', '/srv/XE3/vendor...', 81, Array)
#1 /srv/XE3/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php(81): file_put_contents('/srv/XE3/storag...', '9999999999s:151...', 0)
#2 /srv/XE3/vendor/laravel/framework/src/Illuminate/Cache/FileStore.php(102): Illuminate\Filesystem\Filesystem->put('/srv/XE3/storag...', '9999999999s:151...')
#3 /srv/XE3/vendor/laravel/framework/src/Illuminate/Cache/FileStore.php(157): Illuminate\Cache\FileStore->put('list', '9999999999s:151...', 0)
#4 /srv/XE3/vendor/laravel/framework/src/Illuminate/Cache/Repository.php(183): Illuminate\Cache\FileStore->forever('list', '{"alice":{"id":...')
#5 /srv/XE3/core/src/Xpressengine/Plugin/Cache/FilePluginCache.php(84): Illuminate\Cache\Repository->forever('list', '{"alice":{"id":...')
#6 /srv/XE3/core/src/Xpressengine/Plugin/PluginCollection.php(124): Xpressengine\Plugin\Cache\FilePluginCache->setPluginsToCache(Array)
#7 /srv/XE3/core/src/Xpressengine/Plugin/PluginCollection.php(103): Xpressengine\Plugin\PluginCollection->refresh()
#8 /srv/XE3/core/src/Xpressengine/Plugin/PluginHandler.php(378): Xpressengine\Plugin\PluginCollection->initialize(true)
#9 [internal function]: Xpressengine\Plugin\PluginHandler->getAllPlugins(true)
#10 /srv/XE3/core/src/Xpressengine/Interception/Proxy/ProxyTrait.php(106): call_user_func_array('parent::getAllP...', Array)
#11 [internal function]: Proxy_Xpressengine_Plugin_PluginHandler->_proxyTargetCall('getAllPlugins', Array)
#12 /srv/XE3/core/src/Xpressengine/Interception/Proxy/ProxyTrait.php(90): call_user_func_array(Array, Array)
#13 [internal function]: Proxy_Xpressengine_Plugin_PluginHandler->Xpressengine\Interception\Proxy\{closure}(true)
#14 /srv/XE3/core/src/Xpressengine/Interception/ProxyInvocationHandler.php(94): call_user_func_array(Object(Closure), Array)
#15 [internal function]: Xpressengine\Interception\ProxyInvocationHandler->__invoke(true)
#16 /srv/XE3/core/src/Xpressengine/Interception/ProxyInvocationHandler.php(72): call_user_func_array(Object(Xpressengine\Interception\ProxyInvocationHandler), Array)
#17 /srv/XE3/core/src/Xpressengine/Interception/Proxy/ProxyTrait.php(92): Xpressengine\Interception\ProxyInvocationHandler->callProxy(Array, Object(Closure))
#18 /srv/XE3/storage/interception/Proxy_Xpressengine_Plugin_PluginHandler.php(60): Proxy_Xpressengine_Plugin_PluginHandler->_proxyMethodCall('getAllPlugins', Array)
#19 /srv/XE3/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(216): Proxy_Xpressengine_Plugin_PluginHandler->getAllPlugins(true)
#20 /srv/XE3/app/Http/Controllers/PluginController.php(35): Illuminate\Support\Facades\Facade::__callStatic('getAllPlugins', Array)
#21 [internal function]: App\Http\Controllers\PluginController->index(Object(Xpressengine\Http\Request))
#22 /srv/XE3/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(256): call_user_func_array(Array, Array)
#23 /srv/XE3/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(164): Illuminate\Routing\Controller->callAction('index', Array)
#24 /srv/XE3/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(112): Illuminate\Routing\ControllerDispatcher->call(Object(App\Http\Controllers\PluginController), Object(Illuminate\Routing\Route), 'index')
#25 [internal function]: Illuminate\Routing\ControllerDispatcher->Illuminate\Routing\{closure}(Object(Xpressengine\Http\Request))
#26 /srv/XE3/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(139): call_user_func(Object(Closure), Object(Xpressengine\Http\Request))
#27 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Xpressengine\Http\Request))
#28 /srv/XE3/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): call_user_func(Object(Closure), Object(Xpressengine\Http\Request))
#29 /srv/XE3/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(114): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#30 /srv/XE3/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(67): Illuminate\Routing\ControllerDispatcher->callWithinStack(Object(App\Http\Controllers\PluginController), Object(Illuminate\Routing\Route), Object(Xpressengine\Http\Request), 'index')
#31 /srv/XE3/vendor/laravel/framework/src/Illuminate/Routing/Route.php(203): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(Xpressengine\Http\Request), 'App\\Http\\Contro...', 'index')
#32 /srv/XE3/vendor/laravel/framework/src/Illuminate/Routing/Route.php(134): Illuminate\Routing\Route->runWithCustomDispatcher(Object(Xpressengine\Http\Request))
#33 /srv/XE3/vendor/laravel/framework/src/Illuminate/Routing/Router.php(712): Illuminate\Routing\Route->run(Object(Xpressengine\Http\Request))
#34 [internal function]: Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Xpressengine\Http\Request))
#35 /srv/XE3/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(139): call_user_func(Object(Closure), Object(Xpressengine\Http\Request))
#36 /srv/XE3/core/src/Xpressengine/Settings/SettingsMiddleware.php(69): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Xpressengine\Http\Request))
#37 [internal function]: Xpressengine\Settings\SettingsMiddleware->handle(Object(Xpressengine\Http\Request), Object(Closure))
#38 /srv/XE3/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(124): call_user_func_array(Array, Array)
#39 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Xpressengine\Http\Request))
#40 /srv/XE3/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): call_user_func(Object(Closure), Object(Xpressengine\Http\Request))
#41 /srv/XE3/vendor/laravel/framework/src/Illuminate/Routing/Router.php(714): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#42 /srv/XE3/vendor/laravel/framework/src/Illuminate/Routing/Router.php(677): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Xpressengine\Http\Request))
#43 /srv/XE3/vendor/laravel/framework/src/Illuminate/Routing/Router.php(639): Illuminate\Routing\Router->dispatchToRoute(Object(Xpressengine\Http\Request))
#44 /srv/XE3/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(236): Illuminate\Routing\Router->dispatch(Object(Xpressengine\Http\Request))
#45 [internal function]: Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Xpressengine\Http\Request))
#46 /srv/XE3/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(139): call_user_func(Object(Closure), Object(Xpressengine\Http\Request))
#47 /srv/XE3/app/Http/Middleware/FreezeSEO.php(19): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Xpressengine\Http\Request))
#48 [internal function]: App\Http\Middleware\FreezeSEO->handle(Object(Xpressengine\Http\Request), Object(Closure))
#49 /srv/XE3/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(124): call_user_func_array(Array, Array)
#50 /srv/XE3/app/Http/Middleware/Purifying.php(23): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Xpressengine\Http\Request))
#51 [internal function]: App\Http\Middleware\Purifying->handle(Object(Xpressengine\Http\Request), Object(Closure))
#52 /srv/XE3/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(124): call_user_func_array(Array, Array)
#53 /srv/XE3/app/Http/Middleware/SiteIdentify.php(72): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Xpressengine\Http\Request))
#54 [internal function]: App\Http\Middleware\SiteIdentify->handle(Object(Xpressengine\Http\Request), Object(Closure))
#55 /srv/XE3/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(124): call_user_func_array(Array, Array)
#56 /srv/XE3/app/Http/Middleware/LangPreprocessor.php(34): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Xpressengine\Http\Request))
#57 [internal function]: App\Http\Middleware\LangPreprocessor->handle(Object(Xpressengine\Http\Request), Object(Closure))
#58 /srv/XE3/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(124): call_user_func_array(Array, Array)
#59 /srv/XE3/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(50): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Xpressengine\Http\Request))
#60 /srv/XE3/app/Http/Middleware/ExceptAppendableVerifyCsrfToken.php(21): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Xpressengine\Http\Request), Object(Closure))
#61 [internal function]: App\Http\Middleware\ExceptAppendableVerifyCsrfToken->handle(Object(Xpressengine\Http\Request), Object(Closure))
#62 /srv/XE3/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(124): call_user_func_array(Array, Array)
#63 /srv/XE3/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Xpressengine\Http\Request))
#64 [internal function]: Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Xpressengine\Http\Request), Object(Closure))
#65 /srv/XE3/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(124): call_user_func_array(Array, Array)
#66 /srv/XE3/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(62): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Xpressengine\Http\Request))
#67 [internal function]: Illuminate\Session\Middleware\StartSession->handle(Object(Xpressengine\Http\Request), Object(Closure))
#68 /srv/XE3/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(124): call_user_func_array(Array, Array)
#69 /srv/XE3/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Xpressengine\Http\Request))
#70 [internal function]: Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Xpressengine\Http\Request), Object(Closure))
#71 /srv/XE3/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(124): call_user_func_array(Array, Array)
#72 /srv/XE3/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(59): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Xpressengine\Http\Request))
#73 [internal function]: Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Xpressengine\Http\Request), Object(Closure))
#74 /srv/XE3/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(124): call_user_func_array(Array, Array)
#75 /srv/XE3/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(42): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Xpressengine\Http\Request))
#76 [internal function]: Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Xpressengine\Http\Request), Object(Closure))
#77 /srv/XE3/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(124): call_user_func_array(Array, Array)
#78 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Xpressengine\Http\Request))
#79 /srv/XE3/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): call_user_func(Object(Closure), Object(Xpressengine\Http\Request))
#80 /srv/XE3/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(122): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#81 /srv/XE3/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(87): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Xpressengine\Http\Request))
#82 /srv/XE3/index.php(53): Illuminate\Foundation\Http\Kernel->handle(Object(Xpressengine\Http\Request))
#83 {main}  
[2015-11-16 04:24:21] local.ERROR: Skin을 찾을 수 없습니다  
[2015-11-16 04:24:21] local.ERROR: Symfony\Component\Debug\Exception\FatalErrorException: Uncaught Skin을 찾을 수 없습니다
  thrown in /srv/XE3/core/src/Xpressengine/Skin/SkinHandler.php:399
Stack trace:
#0 /srv/XE3/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(132): Symfony\Component\Debug\Exception\FatalErrorException->__construct()
#1 /srv/XE3/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(118): Illuminate\Foundation\Bootstrap\HandleExceptions->fatalExceptionFromError()
#2 /srv/XE3/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(0): Illuminate\Foundation\Bootstrap\HandleExceptions->handleShutdown()
#3 {main}  

코어에서 건드린건 없습니다.

PHP 7.0.0-RC7 / Nginx 1.9.6 / MariaDB 10.1 환경입니다.

설치시, .htaccess 파일을 생성하지 않음.

설치시 .htaccess 파일을 생성하지 않아 문제점이 발생합니다.
그리고 셋팅정보가 들어간 텍스트형태의 파일이 브라우저 주소로 들어가면 그냥 내용이 노출되는 문제점도 있습니다

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.