- 우리가 회원가입을 하거나 회원정보를 수정하거나 할 시 메일로 축하 메일이나 확인메일이 가곤 하는 것을

   경험한 적이 있으실 것 입니다.

 

 

- 그래서 이번에는 서버에서 PHPMailer를 이용하여 구글에 메일을 발송하는 것을 정리해보겠습니다.

 

 

- 저 같은 경우 aws ec2 임대를 해서 서버를 구축해 놓은 상태에서 진행 하였습니다.

 

 

 

 

1. 라이브러리 사용을 위한 설정.

 

- aws 서버에 접속해서 composer.json에 "require::"phpmailer/phpmailer":"~6.0";을 추가합니다.

 

 

- 그 후 composer install 을 해줍니다.

(저 같은 경우 이미 install 되어 noting to install 이 나오네요~)

 

 

-php 설정파일 디렉토리로 가서 php.ini파일을 열고 openssl쪽이 주석처리 되어있으면 주석을 풀어줍니다.

 

 

 

2.SMTP서버 셋팅

 

-간단합니다. 밑에 내용그대로 허용해주시면 됩니다.

 

 

3. Gmail IMAP 허용

 

 

 

 

4. 계정에 대한 엑세스 허용

 

- 계속 SMTP: Couldn't Authenticated라는 오류가 계속 나와서 aws 내의 보안 규칙도 수정해보고 했으나

  오류가 지속되어서 네이버로 설정해서 보냈더니 네이버는 보내지는 겁니다....!

 

 

-알고보니 여기서 엑세스 허용을 해야 지메일로 보내지는게 가능했습니다.

 

 

- 밑의 링크로 접속해 본인계정을 허용해주도록 합시다(사용할 계정)

 

 

-accounts.google.com/DisplayUnlockCaptcha

 

 

 

 

5. phpmailer 사용 및 소스코드 예시

 

- $mail->Username에는 지메일과 $mail->Password에는 지메일의 비밀번호를 입력하시면 됩니다.

 

 

-이렇게 했는데 안되시면 댓글 달아주세요......! 

'Web & App > Php' 카테고리의 다른 글

PDO (PHP Data Object) 란?  (0) 2020.10.13
php - mysql 연동시 한글 깨짐 현상  (0) 2020.08.17

** Pdo사용을 위해선 php 버전이 5.1.0 이상 이어야 합니다**

 

1.PDO(PHP Data Object) 란?

- PHP에서 여러종류의 데이터 베이스에 접근할 수 있게 해주는 PHP 확장 모듈이다.(클래스)

- (MySQL, MS SQL, Oracle......)

-반면, mysql 함수나 mysqli 클래스는 MySQL 서버만을 대상

- 즉, 여러종류의 데이터베이스를 같은 방식으로 사용할 수 있게 해준다.

- Pdo는 Prepared Statement를 제공하여 SQL을 미리 데이터베이스에서 컴파일 해두고

  parameter만 값만 바꿔 처리 함으로써 성능의 향상을 위해 된다. 그리고 SQL injection 방어용

  으로도 사용될 수 있는데, Pdo 역시 Prepared Statement를 제공하므로 SQL injection 방어에 사용될

  수 있습니다. <밑에 예시 코드에서 확인하시면 됩니다.>

 

 

2. 데이터베이스에 연결

- 데이터베이스에 접속하기 위해서 Pdo를 이용해보자.

- 먼저 pdo를 생성하여야 한다.

 

3.쿼리준비

- 데이터베이스와 연결후 

- prepare() 메소드를 사용.

 

4.데이터를 바인딩, 실행

- execute() 메소드의 인수로 쿼리 파라미터에 사용할 값을 넘겨준다.

 

5. 결과값 가져오기

-이는 다른 예시인데 위의 예시는 그냥 insert를 하는 기능을 수행하는 함수 였기 때문이다.

-(1) fetch()

    : 메소드를 한번 실행하면 쿼리결과에서 한행을 가지고 온다

      반복문을 통해 처리하는 경우가 많다.

-(2) fetchAll()

    : 한번에 모든 행을 가지고 올 떄 사용한다.

**fetch의 모드 구성

      -1 FETCH_BOTH

          - 가져오기 모드를 지정해주지 않으면 이 모드가 지정되는데,

             결과 값을 가지고 올떄 칼럼이름을 키로 사용하는 배열과 칼럼의 순서를 키로 사용하는

             배열 두가지 배열을 만들기 때문에 성능이 좋지않다.

      -2 FETCH_ASSOC

          - 칼럼명을 키로 사용하는 연관배열을 반환한다.

          - $row['COLUMN_NAME']와 같은 방식으로 사용한다.

      -3 FETCH_NUM

          - 컬럼의 순서를 키로 사용하는 연관배열을 반환한다.

          - 가져온 데이터는 $row[NUM]과 같은 식으로 사용한다.

       - 이 3가지 외에도 OBJ(객체) 등이 있다....

저 같은 경우

 

php 스톰을 통해서 작업을 진행하고 있는데 mysql 데이터 베이스와 연동 후

 

테이블에 데이터를 넣고 쿼리문을 날려 확인을 해보려 했을 때 한글로 들어간 데이터 들은

 

???로 표시가 뜨더군요....

 

데이터베이스 는 utf8로 설정을 하는 과정을 했었기 때문에 php 의 문제라 생각 하여 찾아보니..

 

생각보다 오래된 게시글이 많더군요 그래서

 

setting 에 들어가서 파일 인코딩 형식 변경도 하고 해보았지만 잘 해결되지 않아 결국 이렇게 해결하였습니다.

 

데이터 베이스와 php 를 연동시키는 부분에서 

 

$pdo = new PDO("mysql:host=$DB_HOST;dbname=$DB_NAME", $DB_USER, $DB_PW);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec("set names utf8");

return $pdo;

 

빨간색 줄을 한칸 추가 해주시면 됩니다... ! 

 

전 이렇게 해결 되었습니다 

 

도움되는 부분이 있었으면 좋겠습니다 ~!

'Web & App > Php' 카테고리의 다른 글

PHPMailer를 이용하여 서버에서 메일 보내기  (0) 2020.10.20
PDO (PHP Data Object) 란?  (0) 2020.10.13

APM(아파치 + PHP + MYSQL)을 설치하기도 했었는데

 

이번엔 AWS EC2 서버에 NGINX-PHP-MYSQL을 설치하고 연동시켜봅시다.

 

최근에는 패키지 설치를 통해서 매우 간단하게 설치 할 수 있습니다.

 

예전에 APM을 패키지 말고 수동 소스설치로 한번 설치 한다고 헀다가 정말

 

정신적인 고통을 많이 느꼈던 적이.... 하지만 패키지 설치는 매우 간단하여 쉽게 할 수 있습니다.

 

서버에 접속 하여 root 사용자로 접근후 apt-get update를 해줍니다. (필요없는 분도 있겠죠? 뭐 그냥 치시면 됩니다.)

그 후 apt-get install nginx 를 통해서 nginx를 패키지 설치를 해줍니다.

 

servcie nginx restart

service nginx status 

명령어를 통해서 현재 nginx 설치 상태를 확인 할 수 있습니다.

 

본인의 aws 서버의 ip주소를 입력하면 아래와 같이 nginx가 설치 되었음을 확인할 수 있습니다.

 

이제 mysql 을 설치 해봅시다.

 

똑같이 명령어 창에

 

#apt-get install mysql-server mysql-client

 

를 입력하여 줍니다. 

 

그 후 #mysql - u root -p 를 통하여 mysql 서비스 콘솔에 액세스 할 수 있다.

 

처음에는 아무 패스워드를 치거나 그냥 엔터만 쳐도 접근 할 수 있습니다.

 

mysql 비밀번호 를 설정 하는 것은 다음에 한번 다루도록 하겠습니다. 

 

구글링 하시면 어렵지 않게 하실 수 있긴 합니다.

 

그렇다면 이제 php7.2를 설치하여 봅시다.

 

#apt-get install php7.2-fpm

 

을 입력해 줍니다.

 

그 후 자신이 필요한 사항에 따라 php 모듈을 설치하시면 됩니다.

 

저 같은 경우,

 

# apt-get install php7.2-mysql php7.2-mbstring php7.2-xml php7.2-gd php7.2-curl php7.2-bz2 php7.2-zip 

php7.2-json php7.2-readline

 

을 설치해 주었습니다.

 

이 작업이 끝났다면 이제 Nginx 기본 웹사이트 구성 파일을 설정 하여 주어야합니다.

 

/etc/nginx/sites-available 로 들어가

 

vi default 

 

하시면 아래와 같은 소스가 나옵니다.

 

기존의 원본 파일을 아래와 같이 수정하여 주시면 됩니다. (주석해제 및 수정)

 

저는 나중에 쿼리스트리 사용을 위하여 $uri/ /index.php?$query_string 도 추가하여 주었습니다.

(try_files에)

 

server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm;
server_name _;
location / {
try_files $uri $uri/ =404;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
}

 

이후 #nginx -t 를 입력하여 구성파일에 문제가 없는지를 확인하여 줍니다

 

입력시 

 

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

 

이 나온다면 오류가 없는 것입니다.

 

이제 제대로 설정이 되었는지 확인을 위해

/var/www/html에 들어가서 

test.php를 만들어 줍시다.

 

vi test.php 를 하여 <?php phpinfo(); ?>를 입력한 후 저장하여 줍니다.

 

확인을 위하여 ip주소/test.php를 주소창에 입력하여 봅시다.

 

위와 같이 php 정보 페이지가 나와야지 정상적으로 설정 된 것입니다..~!

+ Recent posts