지금 회사에서 사용하고 있는 Kurogo 가 PHP 로 돼 있거든요.
그래서 그 시스템을 커스터마이징을 하려면 PHP 코딩을 해야되서...
거의 10여년만에 PHP를 다시 보고 있습니다.
중간 중간 기억하고 싶은 팁들이 생기면 여기다 저장해 놓으려구요.
일단 지금은 원격 서버의 이미지 파일을 저희 팀 웹페이지에 display 하는 로직을 만들고 있는데요.
우선 그 이미지가 있는지 없는지부터 확인해서 있으면 표시하고 없으면 다른 메세지나 디폴트 이미지를 하기로 했습니다.
이미지 파일이 있는지 없는지를 확인할 수 있는 방법으로는 첫번째로 이미지의 크기를 구하는 함수를 사용할 수 있습니다.
//// check Image size
function checkIMG($IMGPath) {
$fileCheck = getImagesize($IMGPath);
if($fileCheck) { $isExist = "OK"; } else { $isExist = "NO"; }
return $isExist;
}
함수에 원격 이미지 파일의 경로와 파일이름을 담은 $IMGPath 를 넘겨주면 됩니다.
두번째로는 이미지이외에도 다른 경우에도 사용할 수 있는 건데요. 헤더 정보를 얻는 겁니다.
//// get header info
function checkHeader($filePath) {
$AgetHeaders = get_headers($filePath);
if(!$AgetHeaders) {
echo "Network Problem. Too slow or No Network.<p>";
$isExist = "Net";
} else {
if (preg_match("|200|", $AgetHeaders[0])) {
// file exists
$isExiset = "OK";
} else {
// file doesn't exists
$isExiset = "NO";
}
}
return $isExiset;
}
여기선 중간에 살짝 정보를 얻어오지 못할 경우 Network 문제가 있다고 뿌려주는 로직도 있습니다.
그 다음으로는 cURL을 사용하는 건데 이건 정확히 get_headers()와 뭐가 다른지 모르겠네요.
cURL로는 파라미터 정보를 넘길수도 있다고 하는데...
하여간 사용법은 아래와 같습니다.
////////
function curl1($filePath) {
$curl = curl_init();
curl_setopt_array( $curl, array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_URL => $filePath ) );
curl_exec( $curl );
$response_code = curl_getinfo( $curl, CURLINFO_HTTP_CODE );
curl_close( $curl );
return $response_code;
}
function curl2($filePath){
//To get the whole header you can issue a HEAD request, like this:
$curl = curl_init();
curl_setopt_array( $curl, array(
CURLOPT_HEADER => true,
CURLOPT_NOBODY => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_URL => $filePath ) );
$headers = explode( "\n", curl_exec( $curl ) );
curl_close( $curl );
return $headers[0];
}
그런데 위 4가지 방법 모두 다 문제가 있었습니다.
왜냐하면 회사 서버에 Proxy 가 있는데 이걸 통해서는 아무 값도 못 받아오더라구요.
회사 내부 서버끼리 테스트 할 때는 잘 됐는데 회사 네트워크 밖에 있는 이미지(파일)을 가지고 하려니까 안되더라구요.
이럴 경우 Proxy 를 거쳐서 정보를 가져오도록 해야 되는데요.
stream_context_create() 함수와 file_get_contents() 함수를 사용했습니다.
/////// get contents via proxy
function getViaProxy($filePath){
// Define a context for HTTP.
$aContext = array(
'http' => array(
'proxy' => '프락시 정보', // This needs to be the server and the port of the NTLM Authentication Proxy Server.
'request_fulluri' => True,
),
);
$cxContext = stream_context_create($aContext);
// Now all file stream functions can use this context.
$sFile = file_get_contents($filePath, False, $cxContext);
if($sFile){
$result = "Y";
}else{
$result = "N";
}
return $result;
}
이렇게 해서 어렵게 어렵게 문제를 해결했습니다.
'etc. > PHP' 카테고리의 다른 글
PDF 내용을 Text 로 추출하는 PHP 프로그램 분석해 보기 7 (0) | 2013.01.16 |
---|---|
PDF 내용을 Text 로 추출하는 PHP 프로그램 분석해 보기 6 (0) | 2013.01.16 |
PDF 내용을 Text 로 추출하는 PHP 프로그램 분석해 보기 5 (0) | 2013.01.15 |
PDF 내용을 Text 로 추출하는 PHP 프로그램 분석해 보기 4 (0) | 2013.01.08 |
PDF 내용을 Text 로 추출하는 PHP 프로그램 분석해 보기 3 (0) | 2013.01.08 |
PDF 내용을 Text 로 추출하는 PHP 프로그램 분석해 보기 2 (0) | 2013.01.08 |
PDF 내용을 Text 로 추출하는 PHP 프로그램 분석해 보기 1 (0) | 2013.01.05 |
PHP와 XSL 로 XML 변환하기 (0) | 2012.12.21 |
PHP로 XML , JSON 다루기 (2) | 2012.08.24 |