* 옛날에 개발해뒀던 인스타그램에서 사진을 수집하는 크론이 갑자기 실행이 안되길래 원인을 분석해보니, 어느새부터인가 curl에 줘야하는 옵션이 바뀌었나보다. SSL 문제 이후에 보안을 더 신경 썼는지 curl을 실행하고나면 아래와 같은 오류가 나타났다. SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed : 이것을 해결하려면 간단하게 curl의 옵션을 추가하면 된다. curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt ($ch, CURLOPT_S..
* PHP로 RESTful API를 개발하다보면 가끔 AJAX(XMLHttpRequest)를 이용해서 호출하는 경우 로그인 정보를 유지하여 정보 검증을 해야하는 경우가 있는데, AJAX를 이용하는 경우에도 php의 $_SESSION 정보는 활용할 수 있다. 이것을 이용해서 페이지에서 로그인한 정보를 확인하고 검증이 안된 사용자에 대해서는 권한이 없음을 알려주면 권한 관리에 용이하다. * 하지만 php 페이지에서 바로 $_SESSION을 사용하면 로그인 정보를 가져올 수가 없고, session_start();를 AJAX처리하는 PHP 페이지 상단에 넣어야 정상적으로 동작하게 될 것이다. 아래가 아주 간단한 예이므로, 응용하면 된다. API 호출하는 페이지 예 ./api.php 페이지 소스 예 * 잊지말고 ..
* PHP를 통해서 원격에 있는 이미지를 긁어오거나 복사하고 싶을 때가 많은데 예외상황이 많을 것이다. 한번 예외상황들에 대해서 적어보고, 특히 php.ini를 마음대로 수정못하는 웹호스팅을 하고 있다면 꽤나 골치 아플 일이 많을 것이다. : 일단 첫번째로 확인해야될 제약사항은 php.ini에서 "allow_url_fopen"이 "on" 되어있어야한다는 것이다. 만약 이것이 on 되어있다면 원격의 파일을 꽤나 쉽게 가져올 수 있다. * copy 함수를 이용해서 원격 이미지 가져오기: 우선 가장 간단하게 가져올 수 있는 방법은 copy 함수를 쓰는 것이다. copy("http://remotedomain.com/image.jpg", "/tmp/local.jpg"); : 위와 같이 하면 바로 원격의 파일을 로..
* PHP에서 파일을 읽는 fopen 기능에 대해서 알아보자. * fopen 포맷 resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] ) : 인자를 총 4개 받으며, 1, 2번째 인자는 필수고 3, 4번째 인자는 옵션이다. * 첫번째 인자: string $filename : 파일을 로드할 파일명으로, 앞에 "scheme://..."와 같은 프로토콜을 명시하는 경우 해당하는 프로토콜을 이용하는 URL로 판별하여 해당 scheme의 프로토콜 핸들러를 찾아서 파일에 접근하게 된다. 만약 프로토콜이 명시되지 않았다면 서버 로컬의 일반적인 파일로 판단하여 찾게 된다. 만약 로..
[PHP] 파일 업로드 (AJAX, XMLHttpRequest나 form 등으로 file 첨부), 에러나는 이유와 처리 방법 * 클라이언트 측 파일 업로드는 이전에 다뤄봤으니 이번에는 서버측 PHP에서 어떻게 파일을 다룰지 한번 알아보고 파일 업로드를 하게 될 때 일어나는 에러들의 이유와 그 처리 방법을 살펴보자. : 클라이언트 부분은 이전에 작성했던 글을 참고하면 될 것이다. 2012/10/10 - [Programming/Web Programming] - [Javascript] AJAX 비동기로 파일 첨부하기 (IE도 지원하게 만들기) : 솔직히 클라이언트쪽 세팅만 잘해줬으면 PHP 쪽은 할일이 거의 없다. 만약 올리는 쪽에서 input의 name이 "uploadFile"이라고 했다면, PHP쪽에서는 ..
* PHP에서는 이전부터 등과 같은 short tag로 HTML의 소스 중간에 변수의 출력을 간단하게 축약해서 출력하는 방법이 있었다. 하지만 이제는 그 출력 방식이 더이상 이용하게 되지 않고 있다. : 그 이유는 아주 간단하다. 바로 xml의 헤더에도 : 따라서 PHP는 단순히 와 같은 방식을 사용해야하는 것이다. PHP 5.4 이상 버전에서도 여전히 이러한 축약태그가 지원이 되지만, short_open_tags의 설정을 해줘야하고, 다른 어떠한 서버로 자신의 소스 코드를 옮겼을 때 모든 서버에서 돌아가기를 바란다면 이러한 축약 태그보다는 와 같은 풀 태그를 사용하는 것이 추천되고 있는 것이다.
Redhat의 경우 yum을 이용해서 설치를 하게 되면 /etc/php.ini 에 생성하게 된다. 하지만 운영체제나 설정마다 다르기 때문에 확실하게 아는 방법은 바로 phpinfo 페이지에서 찾아보는 것이다. 여기에 php의 설정에 대한 거의 모든 정보가 들어있으니 참고하자. * phpinfo 페이지 만드는 방법: 서버에 info.php 파일을 하나 만들어서 아래와 같이 쓰자. : 그리고 이 페이지로 접근을 하게 되면 다음과 php에 대한 정보들이 쭉 나오는데 아래쪽에 보면 "Loaded Configuration File" 에 "/etc/php.ini" 라고 나와있는 것을 볼 수 있다. : 이런 정보 페이지를 만드는게 귀찮다면 리눅스 콘솔에서 grep을 사용해서 찾아보는 방법도 있지만, 이 정보 페이지의..
* 다른 사람이 짜놓은 라이브러리를 가져다가 열심히 코딩하는데 에러가 났다. [error] PHP Fatal error: Call to undefined function json_decode() in /var/www/html/example/lib/ApiRestHandler.php on line 147, referer: http://example/open_api.html : 에러를 해석하자면, json_decode()라는 함수가 정의되지 않았는데 호출이 되었다는 것이다. 위치는 ApiRestHandler.php의 147번째 줄이다. : 이미 상용화를 하고 있는 문제없는 소스일텐데 에러가 났다. json_decode() 함수가 없다는 것이다. 그럼 라이브러리가 제대로 로드가 안되었거나 버전이 무언가 안맞던가..
오늘 PHP로 작업하다가 일반적인 언어의 유효영역(scope)로 생각하다가 한시간을 낭비한 일이 있었다. : 위와 같이 썼는데, 당연히 전역변수로 선언한 $apiHandler가 함수 내에서 $apiHandler 이렇게 바로 접근하면 될 줄 알았는데, object가 undefined라고 자꾸 나와서 왜그런가 했더니 로컬 함수 영역은 글로벌과는 별로도 따진다는 것이다. 만약에 함수 밖에 선언한 전역 변수를 사용하고자 한다면, function doFunction1(){ global $apiHandler; $apiHandler->call("foo");} : 이렇게 global로 정의를 해주면 전역변수로서 $apiHandler를 접근하게 된다. 이외에서 $GLOBALS 를 사용하는 방법도 있다. function ..
[PHP] Session에 변수 저장하기, 불러오기 $obj = new Object();$_SESSION['myObj'] = $obj; //저장하기 $newObj = $_SESSION['myObj']; //불러오기 object를 저장하는 경우 serialize는 자동으로 해준다고 한다. 찝찝하다면 serialize를 수동으로 해줘도 괜찮다. 그리고 앞에 안전하게 세션의 시작을 설정해주는 것도 좋다. (세션을 사용하는 첫 페이지에 들어왔을 경우) session_start(); //세션 시작 $obj = new Object();$_SESSION['myObj'] = serialize($obj); //저장하기 $newObj = unserialize($_SESSION['myObj']); //불러오기 나중에 세션에..
- Total
- Today
- Yesterday
- 자바스크립트
- K100D
- gre
- 샷
- Python
- google app engine
- 뽐뿌
- 팁
- mini project
- 사진
- 강좌
- php
- lecture
- Android
- Javascript
- java
- TIP
- HTML5 튜토리얼
- HTML5
- 서울
- gae
- Writing
- 안드로이드 앱 개발 기초
- 삼식이
- 탐론 17-50
- 속깊은 자바스크립트 강좌
- GX-10
- ny-school
- c++
- 안드로이드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |