rhymix 에서 PhpSpreadsheet 를 사용할 수 있나요?
CMS/프레임워크 | Rhymix 1.9 |
---|---|
개발 언어 | PHP 7.1 |
php를 통해서 excel를 읽어서 안에 있는 cell의 데이터와 이미지를 파싱해서
서버에 저장을 해야합니다
현재 phpexcel은 개발이 종료가 되었다고 하여 다들 PhpSpreadsheet를 쓰라고 되어있더군요
그래서 로컬에서 별도로 PhpSpreadsheet를 사용했을때는 아무 이상이 없었는데
rhymix 프로젝트에 넣은 다음에 사용하려고 하니깐 안되더군요.
PhpSpreadsheet 찾다가 정보가 너무나도 적어서 여기에다가 글을 올리게 되었습니다.
phpspreadsheet의 vendor를 사용하면 rhymix가 실행이 안되고 rhymix에 기본적으로 설치된 vendor를 사용하면
phpspreadsheet 가 안되더군요.
이 2개를 vendor를 병합하거나 혹은 다른 방법이 있을까요?
p.s : 제일 중요한 것은 excel 문서 안의 이미지를 가져와서 서버에 저장을 해야하는 것인데 그 방법이 전부 phpspreadsheet 사용하라는
조언 밖에 없더군요
댓글 9
============================================================
[RuntimeException]
The lock file does not contain require-dev information, run install with th
e --no-dev option or run update to install those packages.
============================================================
그래서 rhymix에서 막은게(?) 아닌가 생각 들어서 그랬습니다
아니면 composer.json에서 문제가 있어서 그런건가요?
잘 됩니다. 실제 프로젝트에서 사용하고 있습니다.
라이믹스 설치경로의 vendor 폴더는 절대 건드리지 마시고요,
엑셀 기능을 사용할 모듈 경로 아래에 composer를 사용하여 phpSpreadsheet를 따로 설치한 후
실제 필요한 시점에 해당 vendor 폴더의 autoload.php를 인클루드하면 됩니다.
include $this->module_path . 'vendor/autoload.php';
$file = new PhpOffice\PhpSpreadsheet\Spreadsheet();
$sheet = $file->getActiveSheet();
...후략...
www/hostname/ 경로에 composer.json 및 vendor 폴더가 있는데
www/hostname/임의폴더/ 이 경로에 phpspreadsheet 를 설치하고 composer.json을 사용해도 상관이 없는건가요?
네, 당연히 그렇게 해야 합니다.
서드파티 자료에서 필요한 라이브러리 중 코어에서 기본 제공하지 않는 것은
해당 서드파티 자료의 설치경로 안에서 직접 해결하는 것이 원칙입니다.
composer를 쓰든 vendor를 만들든 모두 지금 개발중이신 모듈이나 애드온의 설치경로 안에서 하세요.
/home/hostname/vendor 폴더 하나에 다 몰아넣으면 성능도 좋아지고 더 깔끔하다고 생각하실지 모르지만,
그건 코어의 일부이므로 코어를 업데이트하면 초기화됩니다. 코어를 건드리면 인생이 고달파집니다 ㅠ
감사합니다 :)
composer의 단점 중 하나가...
vendor 폴더에 들어 있거나 composer.json에 적어놓았다고 모두 자동으로 인클루드되는 것이 아니라
내가 설치한 것이 무엇인지 vendor/composer/... 아래에 꽤 복잡한 형식으로 기억을 하고 있어요.
내가 설치한 것이 아니면 vendor 폴더에 들어 있어도 인식을 못 한다는 뜻입니다.
그래서 출처가 다른 2개의 vendor 폴더를 합쳐놓으면 한 쪽밖에 인식을 못 합니다 ㅠㅠ
PSR-0 및 PSR-4에서 폴더 구조에 대한 규칙을 아주 깐깐하게 정한 것은
네임스페이스 및 클래스 이름만 알면 자동으로 찾아서 인클루드할 수 있도록 하기 위함인데,
이럴 거면 뭐하러 규칙을 정했는지 모르겠네요...
cafe24 에서 호스팅할 예정인데 cafe24에서 composer를 사용할 수 없기 때문에
로컬에서 설치했던 파일들을 전부 FTP에 업로드 하는 형식으로 했습니다.
로컬에서는 정상 작동이 되었는데 cafe24에서는 오류가 발생이 됩니다.
로컬에서는 composer install 하고 난 뒤의 vendor 폴더와 composer.json을 옮겼는데 무엇이 잘못이 된걸까요?
cafe24에서 composer install 를 입력을 못 했기 때문에 발생되는 현상인가요?