카테고리 Archives: PHP

php 에서 dbcon 작성 할때 localhost가 안먹을때.

서버에 APM 이 정상 설치가 되어 있으나

php 로 dbcon 을 할때 127.0.0.1은 먹고 localhost 로는 접속이 불가능할때가 있다.

 

먼저 mysql로 로그인을 하여 소켓 위치를 파악하자.

 

php.ini 파일에서 mysql.default_socket 을 일치시켜준다.

 

그다음 아파치나 php-fpm을 재시작 ‘ㅅ’a

php 5.6이상 fsockopen 문제

php 5.6 이상 버전에서 인증서를 확인하는 옵션인 verify_peer 의 값이 flase => true로 변경이 되었다.
때문에 이와 관련하여 (대부분 PG연동) php 5.6 버전과 php 7.0 버전은 PG결재 진행이 안될 수 있다.
http://php.net/manual/kr/migration56.openssl.php

  • 서버의 php 버전이 5.6 이상이고 외부로 HTTPS 통신을 할때 발생한다.

에러메세지는 대략 다음과 같다.
Warning: fsockopen(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in

 

일반적으로 신뢰할수 있는 CA 값을 서버에 /etc/pki/tls/cert.pem 에 저장하고 있다.(아래 명령어로 확인)

단지 특정 외부에서 사용하는 인증서의 ROOT CA 가 서버내 ca-certificates  파일내에 없는것이다 ‘ㅅ’a

해결을 위해서는 서버에 ca-certificates 을 업데이트 하면 되겠다.

해결이 안된다면 아래와 같이 인증서 확인을 끄는 방법으로 php 소스코드를 수정해야 한다.

 

원본: 작동불가 코드

위와 같은 fsockopen 을 아래와 같이 stream_socket_client 으로 대체 하면서
verify_peer 와 verify_host 를 false 로 옵션을 변경하는것으로 해결이 가능하다.

수정본: 작동가능 코드

php 소수 수정을 이용한 해결 방법은 아래 글을 참조하였습니다 🙂
https://blog.e2info.co.jp/2015/12/29/php5-6でカード決済できない

pecl 인스톨 에러 ( ERROR: `phpize’ failed )

으앙 ;ㅅ; php 에 –enable-zip 옵션을 안넣어서 추가하려고 했는데 에러가 났다.

 

pecl 빌더파일의 버그라고 한다.

패치용 파일은 다운받아서 패치하고 하면 된다.

명령어를 따라 하기전 자신에 php 경로와 맞는지 점검하는걸 잊지 말자 ‘ㅅ’a

php 5.5 혹은 php 5.6 일때 php.ini 설정.

# 호환성이나 개발환경을 고려하여 킨다.
short_open_tag = On

# 보안상 끈다.
expose_php = Off
allow_url_fopen = Off

# 자세한 설명은 생략한다 – -!
error_reporting = “E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE”

# GET => POST => COOKIE => ENV => SERVER
variables_order = EGPCS

# post 사이즈는 패리티 비트를 포함하는 통신 규격상
파일 업로드 크기보다 20% 높게 지정해야 한다. 8bit=>10bit 전송관련.
post_max_size = 25M
upload_max_filesize = 20M

# 5.5 이전까지는 주석 처리 되었으나 5.6 부터 UTF-8로 고정된다.
걍 그대로 쓰는것을 추천하지만. euc-kr 문서 깨지는 것을 방지하기 위해서는 아래와 같이 한다.
default_charset = “”

OP캐시는 php 5.5 부터 추가된 php 가속&캐싱 확장모듈이다.
아래는 웹호스팅용 으로 편집한 값이며 대상 목표 사이트는 약 200개 이다.
zendguard 를 도입할경우 zendguard배포본에 포함된 opcache.so 파일로 대체를 하고
익스텐션 로딩 순서는 ioncube -> zendguard -> opcache 순으로 불러와야 한다.