반응형

'개발/PHP'에 해당되는 글 3건

[PHP5] error logging

개발/PHP 2016. 12. 7. 10:13
반응형

기본적으로 php는 에러가 나도 브라우저나 console에 print를 하기 전까지는 제대로 리포팅을 안해주는것 같은데,

아래와 같은 명령어를 상단에 작성해놓으면, 확인이 가능하다.

    error_reporting(E_ALL);
    ini_set("display_errors", 1);
    // mysqli 사용 시
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);


몇 라인에서 에러가 나고, 뭐때문에 에러가 났는지 알려주기 때문에, header파일로 만들어서 항상 include해두는 게 좋을 것 같다.


에러 범위라던지, 레벨에 대해서 detail하게 조절이 가능할 것 같긴한데..

간단한거 만들때만 php쓸거라서 굳이 거기까지는 알아보지 않는 것으로 마무리

반응형

'개발 > PHP' 카테고리의 다른 글

[PHP] mail function 호출 시 unable to qualify my own domain name  (0) 2016.11.28
[PHP5] ipv6 to number  (0) 2016.06.21
,
반응형

php로 mail전송 시 기본적으로 os에 설정되어 있는 /usr/sbin/sendmail 스크립트를 이용하여 호출한다.


전송이 잘 안되는 경우 해당 스크립트가 어떤 심볼릭 링크를 들고 있는지 1차로 확인한다.

php.ini에서 /usr/sbin/sendmail가 아닌 다른 스크립트를 사용하도록 조정 가능함.

$ ls -l /usr/sbin/sendmail


apt-get 으로 sendmail을 설치한 경우 /etc/alternatives/sendmail을 바라볼 것인데,

이 경우에도 전송이 안되는 경우 /var/log/mail.log, /var/log/mail.err를 참조한다.


에러 로그에 unable to qualify my own domain name 라는 에러가 발생하면서 로그 전송이 안되는 경우 /etc/hosts에 full domain 설정을 해주면 해결이 된다. (포맷만 맞추면 되는듯)


# /etc/hosts
127.0.0.1 domain.domain.net domain
127.0.0.1 localhost
반응형

'개발 > PHP' 카테고리의 다른 글

[PHP5] error logging  (0) 2016.12.07
[PHP5] ipv6 to number  (0) 2016.06.21
,

[PHP5] ipv6 to number

개발/PHP 2016. 6. 21. 10:27
반응형

누군가 만들어놓고 간, PHP 서비스를 입사하자마자 떠맡았고, 

KPI니 뭐니 하면서, 기능 추가를 해야할 일이 있었는데, ipv6 주소를 받아다가 decimal format으로 변경해야할 일이 있었다.


역시 PHP라 구글에서 나돌아다니는 코드가 많았는데, 희한하게 geoip legacy파일에서 정의되어 있는 ipv6를 number로 변환한 값과는 조금 다르거나, 바이너리 형태로 리턴이 되어 알아볼 수 없는 형태로 나오는 경우가 많았다.


그러던 중 gmp_strval과 gmp_init을 사용하여 바이너리를 String으로 변경할 수 있는 라이브러리를 발견하여 시도해보니, 잘 동작을 해서 

php-gmp 라이브러리를 설치 후 작업을 시작하게 되었다.


1. php-gmp 설치

 - 당연한 얘기지만 사전에 php, php-fpm 등이 설치되어 있어야 하며, 아래 커맨드로 설치를 할 수 있는데

php-fpm 서비스가 몇초간 내려갔다가 올라오므로, 서비스 downtime이 발생하니 주의해야 한다.

$ apt-get install php-gmp


2. ipv6 address를 number로 변경하는 함수 구현

function ipv6_numeric($ipv6) {
    $ip_n = inet_pton($ipv6);
    $bits = 15;

	$ipv6long = 0;

    while($bits >= 0){
    $bin = sprintf("%08b",(ord($ip_n[$bits])));

        if($ipv6long) {
            $ipv6long = $bin . $ipv6long;
        } else {
            $ipv6long = $bin;
        }
        $bits--;
    }
    return gmp_strval(gmp_init($ipv6long, 2), 10);
}


3. ip address가 ipv6인지 ipv4인지 판단하는 함수 구현

function is_ipv6($ip) {
    return strpos($ip, ":") === false ? 4 : 6;
}


반응형

'개발 > PHP' 카테고리의 다른 글

[PHP5] error logging  (0) 2016.12.07
[PHP] mail function 호출 시 unable to qualify my own domain name  (0) 2016.11.28
,
반응형