PHP 설치
이 전에 웹서버를 운영하기 위해 "Bitnami" 프로그램을 설치하였기 때문에, PHP도 자동으로 같이 설치되어있다.
[참고] 비트나미 (wamp, mamp) 로 Apache 설치
Binami 를 이용해서 Apache, MySQL, PHP를 설치했다면, 비트나미 매니저 프로그램 (manager-windows)을 실행시켜서 웹서버와 데이터 베이스 서비스를 시작, 중지할 수 있다. Start 버튼을 클릭해서 웹서버를 시작(초록불 상태) 시켜야 제대로 동작한다.
실습은 apache 디렉토리 하위에 "htdocs" 디렉토리에서 진행하면 된다.
"htdocs" 는 "웹 루트 디렉토리"로, 클라이언트의 웹브라우저가 비트나미를 통해 설치한 웹서버에 어떤 웹페이지를 요청하면 웹서버는 이 디렉토리에서 그 웹페이지를 찾는다.
Atom 에디터에 htdocs 디렉토리를 프로젝트 폴더로 추가하고 test.php 파일을 생성
<?php
phpinfo();
?>
웹브라우저에서 test.php를 로드시켰을 때 다음과 같은 페이지가 나오면 성공적으로 PHP를 설치한 것이다.
개발을 위한 PHP 환경설정 변경
php.ini - PHP의 설정파일
기본적인 동작 방법을 사용자에 따라 바꾸고 싶다면 이 파일을 수정해서 설정을 변경할 수 있다.
1. display_errors
코딩 중 어느 부분에서 에러가 났는지 알려주는 기능을 설정해주자
- ~\Bitnami\wampstack-7.3.8-0\php 디렉토리에서 php.ini 파일을 문서편집기로 open
- ctrl + F (검색) : display_errors > [다음 찾기] > 앞에 세미콜론(;)이 붙어 있지 않은 부분을 찾기
- display_errors = ON 으로 변경
▶ 기본적으로 설정이 꺼져있었던 이유?
어떤 에러 메세지가 우리 눈에 보인다는 것은 우리가 만든 웹사이트의 방문자에게도 보인다는 뜻이다.
에러 메세지에는 굉장히 중요한 정보가 포함되어 있을 수 있다. 패스워드, 디렉토리 경로 etc...
이러한 에러메세지로 노출되는 정보는 굉장히 중요한 공격의 단서를 제공하기 때문에, 관리자는 최대한 자신의 시스템에 대해서 외부에서 알 수 없도록 숨기는 것이 필요하다.
따라서 기본적으로는 display_errors = Off 상태로 꺼져있었다.
실제로 서비스할 때는 이 옵션을 반드시 꺼야 한다.
2. opcache.enable
php 애플리케이션의 성능을 높이기 위한 설정
opcache.enable = 0 으로 변경 해주자 ( 1 : 켠 상태 , 0 : 끈 상태 )
이 옵션이 켜져 있다면, PHP가 같은 시간 동안 더 많은 웹페이지를 만들어 낼 수 있다. 하지만 켜져 있으면, PHP 파일을 수정해도 바로바로 반영되지 않고 약 30초 ~ 1분 정도 시간이 지난 후에 수정한 내용이 웹페이지에 반영되는 불편함을 겪을 수가 있기 때문에, 개발 시에는 opcache.enable = 0 으로 끄는 것이 좋다.
3. PHP 설정 변경 적용
PHP의 환경설정을 수정하고 적용시키려면, 반드시 비트나미 매니저 프로그램 (manager-windows) 을 켜서 아파치를 restart (stop -> start) 해야 한다.
why?
지금 사용 중인 PHP는 아파치라는 웹서버에 기생하고 있는 상태이다. 따라서 PHP를 재시작하는 방법은 없고, 아파치를 껐다 켜면 아파치가 껐다 켜질 때 php.ini 파일을 이때 읽어서 반영하기 때문이다.
성능 때문에 재시작 시에만 환경설정이 반영된다.
로그 확인
[Configure] > [Open Access Log]
웹서버에 사용자가 접속할 때마다 이 파일에 접속 기록이 한 줄씩 추가된다.
[Error Log]
display_errors 설정이 꺼져 있어도 이 파일에 에러가 한 줄씩 제일 끝에 기록된다.
실제 사용자들에게 서비스를 제공하는 환경에서 display_errors = Off 설정을 끈 경우에 Error Log 파일을 통해서 어떠한 문제가 있는지 확인할 수 있다.
'코딩공부 > WEB2 - PHP' 카테고리의 다른 글
[6] PHP의 URL 파라미터 (0) | 2019.09.25 |
---|---|
[5] PHP 변수 (0) | 2019.09.25 |
[4] PHP의 데이터 타입 - 숫자, 문자 (0) | 2019.09.24 |
[3] PHP의 원리 - 순수 HTML 웹페이지와의 차이 (0) | 2019.09.24 |
PHP 등장 & 수업의 목적 (0) | 2019.09.24 |