본문 바로가기

개발/PHP 라라벨

(13)
Centos 7 에서 browsershot 사용하기 browsershot 은 html 을 pdf 로 저장하기 위한 라이브러리이다. 그런데 왜 라라벨에서 browsershot 사용하기가 아니라 centos 에서 사용하기라고 제목을 붙였냐면 mac 에서는 매우 간단한 설정만 거치면 사용이 가능한 것에 비해 리눅스에서는 뭐가 안되도 참 잘 안됐다. ㅠ_ㅠ 그래서 다음에 또 리눅스에서 laravel + browsershot 을 사용할 일이 생길까봐 기록해 둔다. 파일을 write 하는데 내가 설정한 경로에 안쓰여질때 Browsershot은 렌더링된 html 내용을 파일로 쓰고 pdf 로 변환하는 방식으로 구현되어 있었다. 그런데 html 을 파일로 쓸때부터 문제가 생겼다. Browsershot.php 파일 내에서 file_put_contents 를 하는데 /tm..
session_start() 함수 호출해도 쿠키에 PHPSESSID 저장 안되는 문제 로컬 환경에서 프레임워크를 사용하지 않는 php 개발을 하게 되었다. session_start() 함수를 호출하면 header 에 아래와 같은 정보가 생성된다. Set-Cookie: PHPSESSID=mvegl320ck40kktumvpebptki6; path=/ 크롬 브라우저에서 이런 헤더 응답받았으면 쿠키값에 저장을 해야 하는데 PHPSESSID 가 저장이 안되는 문제가 생겼다. 크롬의 정책때문이라고 하는데 아래와 같이 변경해줘야 한다. $res = @session_start($options); $headers = headers_list(); foreach ($headers as $header) { if (!preg_match('~^Set-Cookie: PHPSESSID=~', $header)) con..
OSX(MacBook) 에 php5.3 설치하기 homebrew 로 설치하려고 했더니 목록에 없어서 아래의 방법으로 설치 curl -s http://php-osx.liip.ch/install.sh | bash -s 5.3 /usr/local 에 아래와 같이 폴더가 생성된다. homebrew 로 관리해야 하기 때문에 /usr/local/Cellar 폴더에 아래와 같이 [php@5.3] 폴더를 생성해주고 php5-5.3.29-20141019-211753 폴더를 해당 폴더로 옮겨준다. 이제 아파치 설정을 변경해줘야 한다. vim /usr/local/etc/httpd/httpd.conf LoadModule php5_module /usr/local/Cellar/php@5.3/5.3.29/libphp5.so #LoadModule php7_module /usr/l..
웹에서 애플로그인 (Sign In with Apple) 구현을 위한 설정 하이브리드 앱(컨텐츠 영역은 웹 기반으로 제작하고 앱 마켓 등록 및 설치를 위해 네이티브 앱으로 포장된 앱)을 만들면서 웹상에서 애플로그인을 추가해야하는 과제가 생겼습니다. 구글에서 애플로그인을 검색하면 네이티브앱개발에 적합한 연동방식 위주로 서칭이 되어 자료를 남겨두고자 합니다. 그런데 네이티브앱 개발자의 뇌피셜에 따르면 애플 개발자 사이트가 자주 바뀌어서 자료를 남겨도 별로 도움이 안될거라고.. ㅠ 애플 개발자 계정을 만드는 방법은 생략할게요. (심사기간도 필요하고 어쩌고 듣긴했지만 제가 만든게 아니라서요.) 우선 웹에서 애플로그인을 구현하는 방법은 두가지가 있습니다. (네이버나 카카오 소셜로그인도 마찬가지에요) JS 를 이용하거나 Rest API를 이용하거나입니다. 저는 서버간 통신을 위해 rest..
라라벨 큐 & Database 사용하기 특정 작업을 비동기적으로 처리해야 할 일이 생겼습니다. 라라벨의 큐를 사용하기 위해서는 드라이버를 선택해야하는데 기존에 mysql 을 사용중이었기때문에 database 로 설정했습니다. 버전 laravel 9.x PHP 8.0 DB 테이블 추가 Job을 담아둘 데이터베이스 테이블을 아래와 같이 생성합니다. php artisan queue:table php artisan migrate --path=database/migrations/create_jobs_table.php 실패한 Job 에 대한 정보를 담아둘 테이블을 아래와 같이 생성합니다. php artisan queue:failed-table php artisan migrate --path=database/migrations/create_failed_j..
withTrashed does not exist 에러 라라벨을 이용하면 db 에서 소프트 삭제(일종의 임시 삭제) 라는 기능을 이용할수 있다. 실제 db row 를 삭제하는 것이 아니라 deleted_at 이라는 컬럼에 삭제 일자를 기록하여 삭제된 것처럼 동작하게 하는 것이다. 해당 model 에서 아래와 같이 SoftDeletes trait 를 사용하고 해당 테이블에 deleted_at 컬럼을 추가 하기만 하면 된다.
DataTables 엑셀 다운받기에서 셀렉트 박스 datatables 에 컬럼이 select box 가 포함된 경우 엑셀 다운받기를 하면 select box 에 포함된 option 들의 text 가 모두 포함된다. 내가 원하는 것은 선택된 option 의 text 값이므로 아래와 같이 datatables 옵션을 변경해 주었다. buttons: [ {extend: 'copyHtml5',className:'data-copy'}, { extend: 'excelHtml5', exportOptions : { format: { body: function( data, row, col, node ) { if (col == 10) { // select box 가 있는 컬럼의 위치 return window.dataTable .cell( {row: row, column: ..
DataTables 상태값 유지 (데이터 소스를 서버 측 처리 ) DataTables 버전: 1.10.9 DataTables에는 테이블의 상태 (페이징 위치, 검색어 등)를 저장할 수있는 옵션이 있으므로 사용자가 페이지를 다시 로드하거나 상세로 이동했다가 뒤로가기로 다시 돌아올때 저장된 값을 가지고 화면을 구성할 수 있다. DataTable 설정 $('#listTable').dataTable({ pageLength: 15, dom: 'B', scrollX: true, scrollCollapse: true, serverSide: true, ... ... bStateSave: true }).api(); bStateSave: true 값을 넣어주면 테이블의 상태 값을 저장한다. 데이터를 DataTable로 가져 오는 방법에는 여러 가지가 있는데 큰 데이터베이스로 작업하는 경..