특정한 PHP 라이브러리를 설치할 때 다음과 같은 오류를 만날 수 있습니다. 이는 흔히 PHP AWS SDK를 설치하시는 분이 만날 수 있는 오류인데요. PHP AWS SDK는 simplexml이라는 이름의 확장 프로그램(Extension)을 사용합니다. 그래서 simplexml이 설치되어 있지 않은 분들은 다음과 같은 오류가 출력되는 것입니다.
the requested PHP extension simplexml is missing from your system.

이 때는 PHP의 XML 라이브러리를 설치하시면 됩니다.
① 최신 버전의 PHP를 사용하는 경우
sudo apt install php-xml
② PHP 5.6을 사용하는 경우
sudo apt install php5.6-xml

이후에 다시 라이브러리를 설치하고, Apache 웹 서버를 재시작 해주면 오류 없이 동작합니다.
'기타' 카테고리의 다른 글
| PHP에서 Error Log 남기는 법 (0) | 2019.04.29 |
|---|---|
| PHP 서버에서 안드로이드 인 앱 결제(IAP) 여부를 검증하는 API 개발하는 방법 (1) | 2019.04.29 |
| PHP Composer에서 Cannot allocate memory 오류 해결 방법 (0) | 2019.04.16 |
| 재직 증명서(국민연금 가입 증명서) 인터넷 발급(PDF 파일로 저장) 방법 (0) | 2019.04.16 |
| MySQL Data Truncated 경고 메시지 해결 방법 (0) | 2019.04.15 |
PHP Composer에서 Cannot allocate memory 오류 해결 방법
간혹 Composer를 이용하여 라이브러리(Library)를 설치하는 경우 다음과 같은 오류에 마주칠 수 있습니다.
proc_open(): fork failed - Cannot allocate memory

이 때는 다음과 같이 메모리 제한(Memory Limit) 값을 조정하여 업데이트를 수행해주시면 됩니다.
sudo php -dmemory_limit=750M composer.phar update

'기타' 카테고리의 다른 글
| PHP 서버에서 안드로이드 인 앱 결제(IAP) 여부를 검증하는 API 개발하는 방법 (1) | 2019.04.29 |
|---|---|
| the requested PHP extension simplexml is missing from your system. 오류 해결 방법 (0) | 2019.04.16 |
| 재직 증명서(국민연금 가입 증명서) 인터넷 발급(PDF 파일로 저장) 방법 (0) | 2019.04.16 |
| MySQL Data Truncated 경고 메시지 해결 방법 (0) | 2019.04.15 |
| 텍스트(Text) 내용을 HTML로 변환하는 방법 (Text to HTML) (0) | 2019.04.15 |
AWS SNS로 문자 메시지(SMS) 전송하기 (PHP 구현)
AWS SNS 서비스를 활용하면 문자 메시지(SMS) 전송 기능을 쉽고 효과적으로 이용할 수 있습니다.
※ AWS SNS로 문자 메시지 전송 ※
SNS 서비스를 검색하여 들어갑니다.

SMS 발송 기능을 지원하는 리전(Region)은 정해져 있습니다. 서울(Seoul) 리전에서는 SMS 문자 메시지 발송 기능을 지원하지 않으므로 도쿄 리전을 선택하면 됩니다.

이후에 [문자 메시지 게시] 버튼을 눌러서 바로 문자 메시지 전송 테스트를 해 볼 수 있습니다.

전화번호를 입력한 뒤에 메시지를 보내 보면, 정상적으로 전송이 완료됩니다.

※ SDK를 활용하여 프로그램 환경에서 문자 전송 ※
① IAM 계정 생성하기
SDK를 활용하면 서버 프로그램에서 문자를 전송하는 등의 기능 구현이 가능합니다. 가장 먼저 해야 할 것은 IAM 계정을 생성하는 것입니다. AWS SNS 서비스에만 접근할 수 있는 별도의 계정을 만들어 줌으로써, 안전하게 관리가 가능합니다.



프로그래밍 방식 액세스 버튼을 눌러서, 실제 서버에서 해당 계정에 로그인하는 식으로 처리하시면 됩니다.

어떤 정책을 사용할 것이냐 물어보는데요. SNS를 사용하겠다고 설정하시면 됩니다.

계정이 생성된 이후에는 액세스 키 ID와 비밀 액세스 키를 기록해 놓으시면 됩니다.

② PHP SDK 사용하기
PHP에서는 Composer를 이용해 AWS SDK를 설치할 수 있습니다. 또한 PHP 5.6 이상인 경우 AWS SDK를 어렵지 않게 사용할 수 있다고 합니다.

이제 라이브러리에서 접근할 수 있는 홈 디렉토리에 .aws 폴더를 생성하고, 그 안에 credentials라는 이름의 파일을 만들어서 AWS 계정 키 값을 넣어주시면 됩니다.

키 값은 다음과 같은 형태로 넣어주시면 됩니다.
[default]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY

이제 설정이 완료되었으므로, SNS를 이용할 수 있습니다. 먼저, PHP 소스코드에서 라이브러리를 불러올 때는 다음과 같이 하시면 됩니다.
require 'vendor/autoload.php';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
이후에 다음과 같은 코드로 SNS 메시지를 전송할 수 있습니다.
$SnSclient = new SnsClient([
'profile' => 'default',
'region' => 'us-east-1',
'version' => '2010-03-31'
]);
$message = '{보낼 메시지 내용}';
$phone = '{국제 전화 번호}';
try {
$result = $SnSclient->publish([
'Message' => $message,
'PhoneNumber' => $phone,
]);
var_dump($result);
} catch (AwsException $e) {
// 실패했을 시에 오류 메시지를 뱉습니다.
error_log($e->getMessage());
}
테스트 결과 정상적으로 잘 동작합니다.
③ 추가 사항
기본적으로 AWS SMS는 설정이 매우 방어적으로 되어 있습니다. [Text Messaging Preferences] 탭으로 이동을 해보시면, [Edit] 창에서 기본적인 텍스트 전송 설정을 할 수 있습니다.

이 때 광고 문자 메시지 등이 아니라, 인증 등의 목적으로 사용자에게 반드시 문자 메시지 전달이 되어야 하는 경우 [Transactional]로 설정을 하셔야 합니다. 또한 [Account Spend Limit]에서 한 달에 사용할 수 있는 최대 금액을 넣을 수 있습니다. 다만, 1달러($)에서 증가하지 않을 것입니다.

월별 SMS 지출 한도는 기본적으로 1.00 USD입니다. 이는 대략적으로 30 ~ 60번 정도의 문자 메시지를 보낼 수 있는 한도입니다. 따라서 회사에서 해당 서비스를 운영하고 계신 분이라면, 월별 SMS 지출 한도를 늘이셔야 합니다. (만약 이 사실을 모르고, 서비스를 런칭하신 분이라면 애도를 표합니다. SMS 서비스가 갑자기 동작하지 않아서, 고객들의 폭풍 문의를 받을 수 있습니다. 특히 주말이라면...)
월별 SMS 지출 한도 증가 요청은 Support Center에서 하실 수 있습니다.
참고 글: https://ndb796.tistory.com/291
AWS 서비스 한도 증가 요청하는 방법 (AWS 문자 메시지 한도 늘이기)
AWS에서 몇몇 서비스는 의도치 않은 과금을 막기 위해 서비스 한도가 정해져 있습니다. 대표적으로 AWS SNS의 문자 메시지(SMS) 전송 서비스는 기본적으로 한 달에 1달러($) 어치만 사용할 수 있도록 제한되어 있..
ndb796.tistory.com
'AWS' 카테고리의 다른 글
| AWS 서비스 한도 증가 요청하는 방법 (AWS 문자 메시지 한도 늘이기) (0) | 2019.04.22 |
|---|---|
| AWS 람다(Lambda)에서 AWS S3 서비스 이용하기 (0) | 2019.04.17 |
| Python boto3을 이용하여 AWS S3과 연동하기 (1) | 2019.04.10 |
| AWS 람다(Lambda)로 Python 서버 API 구현하기 ② 나만의 API 만들기 (3) | 2019.04.10 |
| AWS EC2 인스턴스를 이미지(AMI)로 만들어 그대로 저장하기 (0) | 2019.04.09 |
ModSecurity 2를 이용해 Apache 로그 관리 및 방화벽 설정하기
ModSecurity 2를 이용하면 Apache 웹 서버의 기본적인 웹 방화벽 설정을 할 수 있습니다. 또한 특정한 요청(Request)에 대한 로그를 진행하는 데에 도움을 얻을 수 있기 때문에 자주 사용됩니다. 대표적으로, 서버 오류를 발생시키는 요청에 대해서는 자동으로 로깅을 진행합니다. (POST 방식의 API의 파라미터를 이상하게 요청하여 500번 응답 코드를 받는 등)
설치는 다음과 같이 할 수 있습니다.
sudo apt install libapache2-mod-security2

이후에 추천 환경설정 파일을 /etc/modsecurity/modsecurity.conf의 위치로 옮기면, 기본적인 설정 그대로 ModSecurity를 이용할 수 있습니다. 그리고 아파치(Apache) 서버를 재시작합니다.
sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
sudo apachectl restart
이후에 /var/log/apache2/modsec_audit.log 파일에 로그 데이터가 기록됩니다. 이를 출력하도록 만들면 다음과 같이 로그가 출력되는 것을 확인할 수 있습니다.
tail -f /var/log/apache2/modsec_audit.log

물론 자신이 운영하고 있는 서비스에 따라서, 서로 다르게 방화벽 설정을 할 필요가 있기 때문에 실제로 로그가 찍히는 것을 보면서 환경 설정을 바꾸어가면서 쓰면 좋습니다.
'시큐어 코딩(Secure Coding)' 카테고리의 다른 글
| 우분투(Ubuntu) 리눅스 서버에서 IPtables를 활용해 방화벽 설정하기 (0) | 2019.03.26 |
|---|---|
| 우분투(Ubuntu) 리눅스 서버에서 UFW를 활용해 방화벽 설정하기 (0) | 2019.03.26 |
| 서버 개발 보안 가이드 - 인증 수행 제한 (0) | 2019.03.26 |
재직 증명서(국민연금 가입 증명서) 인터넷 발급(PDF 파일로 저장) 방법
일반적으로 재직 증명서는 [국민연금 가입 여부]를 이용하여 대신 증명할 수 있습니다.
▶ 국민연금 웹 사이트: http://www.nps.or.kr/jsppage/main.jsp

이후에는 다음과 같이 [공인 인증서 로그인]을 할 수 있습니다.

이제 다음과 같이 약관에 동의하고 증명서를 발급할 수 있습니다.

다음과 같이 원하는 가입 내역을 선택하여 [프린터 발급]을 할 수 있습니다.

'기타' 카테고리의 다른 글
| the requested PHP extension simplexml is missing from your system. 오류 해결 방법 (0) | 2019.04.16 |
|---|---|
| PHP Composer에서 Cannot allocate memory 오류 해결 방법 (0) | 2019.04.16 |
| MySQL Data Truncated 경고 메시지 해결 방법 (0) | 2019.04.15 |
| 텍스트(Text) 내용을 HTML로 변환하는 방법 (Text to HTML) (0) | 2019.04.15 |
| MySQL Safe Update Mode 오류 발생시 해결 방법 (1) | 2019.04.15 |
