고객 문의중 기존서버에서는 잘되던 sns 내보내기 기능이 새로 구입한 서버에서는 정상적으로 안된다고한다.
http://도메인/bbs/sns_send.php?longurl=http%3A%2F%2F도메인%2Fshop&title=sns=gplus
위와같은 주소로 연결이 되는데 서버로는 연결이 되는듯 하나 아파치 로그에는 찍히지 않는것으로 보아 아파치 문제는 아닌듯 하다.
bbs/sns_send.php 를 살펴보면
5 $title = urlencode(str_replace('\"', '"',$_REQUEST['title']));
6 $short_url = googl_short_url($_REQUEST['longurl']);
7 if(!$short_url) {
8 $short_url = $_REQUEST['longurl'];
위 내용중 6번 라인을 주석하면 정상적으로 작동된다는 글을 구글링을 통해 찾았다.
실제로 6번 라인 주석하니 sns 내보내기 기능이 정상적으로 작동된다.
그럼 googl_short_url 이라는 함수가 정상적으로 작동되지 않는다는건데...
googl_short_url 이라는 함수 설정은 lib/common.lib.php 파일에 들어가 있다.
2761 // goo.gl 짧은 주소 만들기
2762 function googl_short_url($longUrl)
2763 {
2764 global $config;
2765
2766 // Get API key from : http://code.google.com/apis/console/
2767 // URL Shortener API ON
2768 $apiKey = $config['cf_googl_shorturl_apikey'];
2769
2770 $postData = array('longUrl' => $longUrl);
위와같이
google.com 에서 API 키를 받아와야 한다.
도메인/adm 들어가서 환경설정의 SNS 쪽 확인해보면 구글 짧은주소 API KEY 등록하는부분이 있긴 하지만... 애초에 짧은 주소 기능을 사용 안하게 되면 위 함수와 현재 정상적으로 작동되지 않는 sns 내보기 기능과는 무관한듯 보인다...
결론은 구글링에서 찾은 6번라인 주석하면 해결된다는것은 임시방편(다른쪽에 에러가 있을 수도 있음)에 불과하다...
계속 테스트 해보니
https 로 넘어갈 때 정상적으로 작동을 하지 않는다.
소스 보면 curl 을 통해서 http 혹은 https 로 넘어가는데 .. 확인결과 구서버에는 curl 에 openssl 이 enable 돼 있으나 신 서버는 openssl 의 없다(cURL Information => libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2)
########curl 재설치#######
상황
cent 5사용중이던 고객사가 cent 6 로 서버 이전
이전중 문제 발생, 원인은 curl 에 openssl 이 적용돼있지 않음
이번주에 위와 똑같은 문제인 고객사 1명 더 있었음
(이사람도 구서버는 잘돼는데 이번에 신서버(구서버 신서버 os 기억안남)
에서는 특정 기능이 안된다는 문의였음)
궁금한점
구서버와 신서버의 curl 달라진건가 ?
아니면 cent 5점대 6점대 버전차이 ?
curl 에 open ssl 기능이 포함돼 있찌 않으면 그 결제모듈? 이런거 통신할때
curl 에 openssl 기능 사용해야되서 문제 있을듯합니다.
해결은
curl 다운받고 설치
tar xvfz curl-7.49.0.tar.gz
cd curl-7.49.0
./configure --prefix=/usr/local/curl
make && make install
기존 curl 백업
cd /usr/lib64
mkdir curl_backup
mv libcurl.so* curl_backup/
cp -a /usr/local/curl/lib/libcurl.* ./
아파치 재시작하면 curl 에 openssl 포함돼있음
##############
위와같이 curl 재설치 하면
cURL Information => libcurl/7.49.0 OpenSSL/1.0.1e zlib/1.2.3 libidn/1.18openssl 들어가있음
##############
위 문제가 아니였다. 개삽질 했다.
localhost로 통신을 해야하는데 iptables로 제일 상단에 해외아이피 차단(!KR 제외한 모든 아이피 차단)을 걸어놨다. 그러면서 127.0.0.1 즉 로컬호스트도 차단이 된거다. 그래서 안됐던거임
'job > etc' 카테고리의 다른 글
sed 명령어 설명 (0) | 2018.08.31 |
---|---|
sed를 이용해서 지정하는 언어부터 지정하는 언어까지 라인 삭제하기 (0) | 2018.08.31 |
두 파일 비교해서 그중에 같은 내용은 빼고 출력(즉 두개 비교해서 다른 내용만 출력) (0) | 2018.08.31 |
시스템 엔지니어 기술 면접지 (0) | 2018.08.31 |
웹에서 바이러스 검사하기 (0) | 2018.08.31 |