편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
3번째 줄: | 3번째 줄: | ||
;PHPExcel 시작하기 | ;PHPExcel 시작하기 | ||
<img src="http://download-codeplex.sec.s-msft.com/Download?ProjectName=phpexcel&DownloadId=65397&Build=21018" alt="PHPExcel"> | |||
==다운로드== | ==다운로드== | ||
*http://phpexcel.codeplex.com/ 접속 | *http://phpexcel.codeplex.com/ 접속 | ||
*[Download] 클릭하여 PHPExcel_1.8.0_doc.zip 다운로드(5,284 KB) | *[Download] 클릭하여 PHPExcel_1.8.0_doc.zip 다운로드(5,284 KB) | ||
*PHPExcel_1.8.0_doc.zip 압축해제 | |||
:내부에 Classes, Documentation, Examples 폴더가 있다. | |||
==설치== | ==설치== | ||
* | *웹서버의 [[/usr/share/php/vendor 폴더]]<ref>폴더가 없으면 만들자</ref>로 이동 | ||
< | <source lang='cli'> | ||
[root@zetawiki vendor]# ll | [root@zetawiki ~]# mkdir -p /usr/share/php/vendor/ | ||
- | [root@zetawiki ~]# cd /usr/share/php/vendor/ | ||
</ | </source> | ||
* | *Classes 폴더 전체 업로드 | ||
< | <source lang='cli'> | ||
[root@zetawiki vendor]# | [root@zetawiki vendor]# ll | grep Classes | ||
[root@zetawiki vendor]# | drwxr-xr-x 3 root root 4096 Aug 31 21:30 Classes | ||
</source> | |||
*Classes 폴더의 이름을 PHPExcel로 변경 | |||
<source lang='cli'> | |||
[root@zetawiki vendor]# mv Classes/ PHPExcel | |||
[root@zetawiki vendor]# ll | grep PHPExcel | |||
drwxr-xr-x 3 root root 4096 Aug 31 21:30 PHPExcel | |||
</source> | |||
</ | |||
==쉘 테스트== | ==쉘 테스트== | ||
*[[DOCUMENT_ROOT 폴더]]로 이동 | *[[DOCUMENT_ROOT 폴더]]로 이동 | ||
* | *phpexcel 폴더 생성하고 그 아래에 phpexcel1.php 파일 작성 | ||
<source lang='cli'> | |||
< | |||
[root@zetawiki vendor]# cd /var/www/html | [root@zetawiki vendor]# cd /var/www/html | ||
[root@zetawiki html]# mkdir | [root@zetawiki html]# mkdir phpexcel | ||
[root@zetawiki html]# cd | [root@zetawiki html]# cd phpexcel | ||
[root@zetawiki phpexcel]# vi phpexcel1.php | [root@zetawiki phpexcel]# vi phpexcel1.php | ||
</ | </source> | ||
< | <source lang='php'> | ||
<?php | <?php | ||
include 'vendor/PHPExcel | include '/usr/share/php/vendor/PHPExcel/PHPExcel.php'; | ||
function column_char($i) { return chr( 65 + $i ); } | function column_char($i) { return chr( 65 + $i ); } | ||
71번째 줄: | 68번째 줄: | ||
$writer->save('test.xlsx'); | $writer->save('test.xlsx'); | ||
echo "Done...\n"; | echo "Done...\n"; | ||
</ | </source> | ||
*쉘에서 실행하고 test.xlsx이 생성되었는지 확인 | *쉘에서 실행하고 test.xlsx이 생성되었는지 확인 | ||
< | <source lang='cli'> | ||
[root@zetawiki phpexcel]# php phpexcel1.php | [root@zetawiki phpexcel]# php phpexcel1.php | ||
Done... | Done... | ||
[root@zetawiki phpexcel]# ll test.xlsx | [root@zetawiki phpexcel]# ll test.xlsx | ||
-rw-r--r-- 1 root root 6571 Aug 31 22:16 test.xlsx | -rw-r--r-- 1 root root 6571 Aug 31 22:16 test.xlsx | ||
</ | </source> | ||
*test.xlsx 파일을 내려받아 내용 확인 | *test.xlsx 파일을 내려받아 내용 확인 | ||
*다음의 웹 테스트를 위해 test.xlsx 삭제 | *다음의 웹 테스트를 위해 test.xlsx 삭제 | ||
< | <source lang='cli'> | ||
[root@zetawiki phpexcel]# rm -f test.xlsx | [root@zetawiki phpexcel]# rm -f test.xlsx | ||
</ | </source> | ||
==웹 테스트 (오류)== | ==웹 테스트 (오류)== | ||
*웹브라우저에서 http://서버주소 | *웹브라우저에서 http://서버주소/phpexcel/phpexcel1.php 접속 | ||
*Done... 이라는 문구가 뜨지 않는다. | *Done... 이라는 문구가 뜨지 않는다. | ||
*[[아파치 오류 로그]]를 확인해보면... | *[[아파치 오류 로그]]를 확인해보면... | ||
< | <source lang='cli'> | ||
[root@zetawiki phpexcel]# cat /var/log/httpd/error_log | grep phpexcel1 | [root@zetawiki phpexcel]# cat /var/log/httpd/error_log | grep phpexcel1 | ||
[Sat Jun 20 21:23:44 2015] [error] [client 127.0.0.1] PHP Fatal error: Uncaught exception 'PHPExcel_Writer_Exception' with message 'Could not close zip file test.xlsx.' in /usr/share/php/vendor/PHPExcel | [Sat Jun 20 21:23:44 2015] [error] [client 127.0.0.1] PHP Fatal error: Uncaught exception 'PHPExcel_Writer_Exception' with message 'Could not close zip file test.xlsx.' in /usr/share/php/vendor/PHPExcel/PHPExcel/Writer/Excel2007.php:348\nStack trace:\n#0 /var/www/html/phpexcel/phpexcel1.php(28): PHPExcel_Writer_Excel2007->save('test.xlsx')\n#1 {main}\n thrown in /usr/share/php/vendor/PHPExcel/PHPExcel/Writer/Excel2007.php on line 348 | ||
</ | </source> | ||
==오류 해결 (권한 조정)== | ==오류 해결 (권한 조정)== | ||
[[httpd]]<ref>보다 정확하게는 httpd를 실행한 리눅스 계정</ref>에게 해당 폴더의 쓰기 권한이 없기 때문에 오류가 발생한다. | [[httpd]]<ref>보다 정확하게는 httpd를 실행한 리눅스 계정</ref>에게 해당 폴더의 쓰기 권한이 없기 때문에 오류가 발생한다. | ||
< | <source lang='cli'> | ||
[root@zetawiki ~]# ps -ef | grep httpd | grep -v grep | [root@zetawiki ~]# ps -ef | grep httpd | grep -v grep | ||
root 1750 1 0 Jun13 ? 00:00:00 /usr/sbin/httpd | root 1750 1 0 Jun13 ? 00:00:00 /usr/sbin/httpd | ||
111번째 줄: | 108번째 줄: | ||
apache 25934 1750 0 Jun20 ? 00:02:20 /usr/sbin/httpd | apache 25934 1750 0 Jun20 ? 00:02:20 /usr/sbin/httpd | ||
apache 29616 1750 0 Jun18 ? 00:04:32 /usr/sbin/httpd | apache 29616 1750 0 Jun18 ? 00:04:32 /usr/sbin/httpd | ||
</ | </source> | ||
:→ 최초 구동은 root가 했지만, 실제로 사용자의 요청을 받아 PHP 명령어를 수행하는 계정은 apache이다. | :→ 최초 구동은 root가 했지만, 실제로 사용자의 요청을 받아 PHP 명령어를 수행하는 계정은 apache이다. | ||
< | <source lang='cli'> | ||
[root@ | [root@hub phpexcel]# ll /var/www/html/phpexcel/ -d | ||
drwxr-xr-x 3 root root 4096 Aug 31 22:20 /var/www/html | drwxr-xr-x 3 root root 4096 Aug 31 22:20 /var/www/html/phpexcel/ | ||
</ | </source> | ||
:→ phpexcel 폴더의 퍼미션이 [[755]]이고, owner가 root이므로 apache 계정이 파일을 쓸 수 없는 상태이다. | :→ phpexcel 폴더의 퍼미션이 [[755]]이고, owner가 root이므로 apache 계정이 파일을 쓸 수 없는 상태이다. | ||
< | <source lang='cli'> | ||
[root@zetawiki phpexcel]# chown apache:apache /var/www/html | [root@zetawiki phpexcel]# chown apache:apache /var/www/html/phpexcel/ | ||
[root@zetawiki phpexcel]# ll /var/www/html | [root@zetawiki phpexcel]# ll /var/www/html/phpexcel/ -d | ||
drwxr-xr-x 3 apache apache 4096 Aug 31 22:20 /var/www/html | drwxr-xr-x 3 apache apache 4096 Aug 31 22:20 /var/www/html/phpexcel/ | ||
</ | </source> | ||
:→ phpexcel 폴더의 소유자를 apache로 바꾸었다. | :→ phpexcel 폴더의 소유자를 apache로 바꾸었다. | ||
==실행예시 (성공)== | ==실행예시 (성공)== | ||
* http://서버주소 | * http://서버주소/phpexcel/phpexcel1.php 다시 접속 | ||
{{인용문| | |||
Done... | Done... | ||
}} | |||
:→ 오류 없이 정상적으로 수행되었다. | :→ 오류 없이 정상적으로 수행되었다. | ||
*파일 생성 확인 | *파일 생성 확인 | ||
< | <source lang='cli'> | ||
[root@zetawiki phpexcel]# ll test.xlsx | [root@zetawiki phpexcel]# ll test.xlsx | ||
-rw-r--r-- 1 apache apache 6570 Aug 31 22:33 test.xlsx | -rw-r--r-- 1 apache apache 6570 Aug 31 22:33 test.xlsx | ||
</ | </source> | ||
*http://서버주소 | *http://서버주소/phpexcel/test.xlsx 다운로드하여 내용 확인 | ||
==같이 보기== | ==같이 보기== | ||
*[[Fatal error: Class 'XMLWriter' not found]] | *[[Fatal error: Class 'XMLWriter' not found]] | ||
==주석== | ==주석== |