[ PHP ] 로컬 개발환경 구축2 – Phpstorm

로컬 개발환경 구축 두번째로 Phpstorm 설치 및 APM연동에 관해 알아본다. 학생인 경우 phpstorm을 무료로 사용할 수 있다. 회원 가입 시 학교 이메일을 입력하고 인증을 받으면 1년단위로 갱신하면서 계속 무료 사용이 가능하다.

[PHPstorm의 설치 및 동작확인]

  1. 다음 경로에서 phpstorm을 다운로드 받는다.
    https://www.jetbrains.com/phpstorm/download/
  2. 설치과정은 특별한 것이 없기때문에 생략하고, 설치 후 처음 실행이 되면, ‘Create New Project’를 선택한다.
  3.  New Project창이 뜨면 ‘PHP Empty Project’를 선택하고 Location을 입력한다. 그리고 PHP버전을 선택한 후 CLI Interpreter의 우측 ‘…’버튼을 클릭하고, Default Interpreters창이 뜨면, 왼쪽 상단의 ‘+’버튼을 클릭하고 PHP가 설치되어 있는 경로를 선택해준다. 여기서는 지난번 ‘로컬 개발환경 구축1’에서 설치된 c:\php\php.exe’를 선택하고 ‘OK’를 클릯하면 다시 New Project창이 나온다. 여기서 ‘Create’버튼을 클릭한다.
  4. 생성된 프로젝트의 Navigation Bar에서 우클릭을 하고, New메뉴의 PHP File을 선택한다. Create New PHP File창이 나오면 파일 이름을 입력하고 ‘OK’를 클릭한다.
    [Tip] View-Tool botton을 선택하면 navigarion bar등이 나타나 전환을 쉽게 할 수 있다.
  5. 파일이 열리면 echo ‘헬로우 PHPstorm’을 입력하고, 우측상단 에디터창 안에 보이는 브라우저 아이콘 중에서 원하는 브라우저 하나를 클릭한다.
    혹은 Navigation Bar에서 우클릭을 하고 RUN메뉴를 클릭하면 된다.
  6. 이때 브라우저 창에 ‘헬로우 PHPstorm’이라고 표시되면 설치가 성공한 것이다.

[Database 설정]

  1. 4번의 팁을 적용했을 경우 우측상단에 세로로 Database버튼이 보일 것이다. 설정하지 않았다면, View-Tool Windows-Database를 선택한다.
  2. Database창의 오른쪽 상단 ‘+’버튼을 클릭하고 ‘Data Source > MySQL’을 선택하면 Data Source and Driver창이 나온다.
  3. 여기서 Database이름을 입력하고, user는 root그리고 password는 지난번 MySQL설치시 암호를 입력해준다. 물론 DB는 미리 생성해 두어야 한다.
    이 상태에서 test를 해봐야 하는데 ‘Test Connection’버튼이 disable되어 있을 것이다. driver가 섶치되지 않아서이다. 창 하단에 보면 노란색 느낌표 아이콘과 함께 ‘Download messing driver files’라는 메시지가 보인다. 이 메시지의 download를 클릭한다.
  4. 다운로드가 완료되면 ‘Test Connection’버튼이 enable된다. 버튼을 클릭하고 잠시 기다리면 정상인 경우 버튼 옆에 successful이라는 초록색 글자가 나타난다.
  5. 이제 phpstorm에서도 MySQL의 workbench처럼 database를 관리할 수 있다. 각자 편한 것을 사용하면 된다.

[ PHP ] 로컬 개발환경 구축1 – APM

윈도우에 PHP개발 환경을 구축할 경우 보통 WAMP나 Autoset과 같은 프로그램을 설치하여 웹서버 환경을 구축한 후 개발하게 된다. 하지만 개발자라면 APM의 구조를 이해하고 개별적으로 관리할 수 있어야 한다. 물론 리눅스에 개발환경을 구축하는 것이 가장 좋은 방법이기는 하지만, 업무상 윈도우를 사용할 일이 많은 경우 이렇게 라도 해서 개발환경을 이해하고, 궁극적으로는 서버의 환경을 이해하는 것이 개발자로서 많은 도움이 될 것이다.
이 번에는 윈도우에 PHP와 MySQL 그리고 Apache웹서버를 직접 설치하는 방법을 설명한다.

1. PHP, MySQL, Apache 최신버전을 다운로드 받는다.

(1) PHP : http://windows.php.net/download/
2017년 5월 5일 현재 버전은 PHP 7.1 (7.1.4)이다. 물론 자신의 개발 환경이 7.x가 아니고 5.6또는 그 이하라면 해당 버전을 다운로드 받으면 된다.
이번에는 64bit용인 ‘VC14 x64 Thread Safe (2017-Apr-12 02:21:00)-Zip'(23.17MB)을 다운받아 사용한다.
(2) MySQL : https://dev.mysql.com/downloads/windows/installer/
사이트에 접속하여 ‘Windows (x86, 32-bit), MSI Installer'(18.5MB)를 다운로드 받는다. 2017년5월5일 현재 버전은 5.7.18이다.
‘Download’버튼을 클릭하면 로그인하거나 회원가입을 하라는 메시지를 볼 수 있으나 하단의 ‘No thanks, just start my download.’를 클릭하면 회원이 아니어도 다운로드 받을 수 있다.
(3) Apache : https://www.apachelounge.com/download/
위 링크에 접속하여 ‘httpd-2.4.25-win64-VC14.zip'(14.4MB)를 다운로드 받는다.

2. PHP 설치

(1) 압축풀기
압축은 원하는 곳에 풀어주면 된다. 여기서는 C의 root에 압축을 풀었다는 가정하에 설명한다.
(2) PATH 추가하기
‘고급 시스템  설정 보기’를 검색하여 실행하면 ‘시스템 속성’창이 뜬다. ‘고급’텝에서 ‘환경 변수(N)…’버튼을 클릭하고, 환경변수 창이 뜨면 상단의 ‘사용자 변수’의 ‘새로 만들기(N)’버튼을 클릭한다. 여기서 변수이름(임의의 이름 : ‘PHP’)과 변수 값(경로 : ‘c:\php’)을 입력하고 확인버튼을 누른다. 혹은 다른 변수에 편집을 통해 변수 값만 추가해 줘도 된다. 추가할때는 세미콜론(;)으로 구분해 준다.
다음으로 아래쪽 ‘시스템 변수(S)’창을 스크롤 하면서 Path가 있는 부분을 찾아 선택하고, ‘편집’버튼을 클릭한다. 환경변수 편집창이 뜨면, 창 우측의 ‘새로 만들기(N)’ 버튼을 클릭한다. 여기에 PHP경로를 입력하고 확인을 누른다. (예)c:\php
이제 먼저 떠있던 창의 확인 버튼을 하나씩 클릭하면 설정이 끝난다.

(3) CMD 창으로 확인하기
CMD창을 뛰운 후 ‘php -ver’을 실행하여 정장적으로 실행되는지를 확인한다.
만일 정상적으로 실행되지 않고 에러가 날 경우는 microsoft.com에 접속하여, ‘2015 재배포 가능 패키지’를 다운받아 설치한다.
이때 ‘2013 재배포 가능 패키지’도 함께 설치하면 나중에 워크벤치를 설치할때 편하다. 2013재배포 패키지가 없으면 워크벤치가 설치되지 않기 때문이다. 만일 설치를 잊고 지나쳤어도 상관은 없다 워크벤치 설치시 설치가 되어 있지 않다면, 설치를 할 것인지 물어보기 때문이다.

3. MySQL 설치

앞서 다운받은 ‘mysql-installer-web-community-5.7.18.1.msi’를 실행한다.
(1) License Agreement를 체크하고 ‘Next>’클릭.
(2) Custom을 선택하고  ‘Next>’클릭.
(3) MySQL Server, MySQL Workbench를 선택하고 ‘Next>’클릭.
(4) ‘Execute’클릭 – 다운로드 받는데 시간이 좀 걸린다. 다운로드가 끝나면 자동으로 설치가 되고, 설치가 완료되면 ‘Next>’버튼이 활성화 된다. ‘Next>’클릭.
(5) Product Configuration에서 ‘Next>’클릭.
(6) Type and Networking창에서 ‘Standalone MySQL Server / Classic MySQL Replication’ 선택하고 ‘Next>’클릭하면 Server Configuration Type화면이 나오는데 기본 설정데로 하고 ‘Next>’클릭.
(7) 비밀번호 입력 후 ‘Next>’클릭. 이후 과정은 모두 ‘Next>’를 클릭한다.
(8) 마지막 Apply Configuration에서  ‘Execute’클릭하면 자동으로 하나씩 설정한다.  설정이 끝나면 ‘Finish’버튼을 클릭한다.
(9) 다음 Product Configuration에서 ‘Next>’클릭 후 ‘Finish’버튼을 다시 클릭한다.
* 설치 과정에서 ‘Check Requirements’에 Microsoft Visual C++ 2013 Runtime이 필요하다고 나오면 ‘Execute’를 클릭하여 설치한다. –  ‘Next>’를 클릭하지 말고 반드시 ‘Execute’를 클릭한다.
(10) 설치가 끝나면 시작메뉴에 MySQL관련 메뉴가 보인다. 정상동작을 확인하기 위하여, 메뉴 중 ‘MySQL 5.7 Command Line Client’를 실행한다.
(11) 비밀번호를 입력하면 프롬프트가 ‘mysql>’로 바뀐다. 여기에 ‘show databases;’를 입력하고 현재 DB의 상태를 확인하다.

4. Apache 설치

다운 받은 압축파일을 풀어 Apache24폴더만 원하는 곳에 복사한다. 여기서는 C의 root에 복사한 것으로 한다.
[httpd.conf 파일 수정]
C:/Apache24/conf/httpd.conf 파일을 에디터에서 연다.
(1) ServerRoot경로 수정
37번째 라인에 ServerRoot “c:/Apache24″의 경로 부분을 아파치를 복사한 경로로 수정한다. 문론 여기서는 c의 root에 복사했음으로 수정하지 않는다.
(2) Port 수정
포트는 반듯이 변경해야 하는 것은 아니지만, 웹브라우저가 80포트를 기본으로 지원함으로 80이외의 포트로 설정하면 매번 포트 번호를 입력해야 하는 불편함이 있다.
58번째 라인의 Listen 80 에서 원하는 포트 번호를 입력하면 된다. default는 80임으로 여기서는 수정하지 않기로 한다.
(3) ServerName 수정
221번째 라인 #ServerName www.example.com:80의 #을 제거하고 ServerName localhost:80 혹은 ServerName 127.0.0.1:80으로 수정한다. 마직막의 80은 포트번호로 (2)번에서 설정한 포트번호와 동일하게 수정해 주면 된다.
(4) 웹문서 저장위치 수정
245번째 라인 DocumentRoot “c:/Apache24/htdocs”의 큰따운표 안의 경로를 원하는 경로로 수정한다. 그리고 바로아래 246번째 라인 <Directory “c:/Apache24/htdocs”>의 경로도 동일하게 수정한다.
(5) Path추가
윈도우 검색을 통해 “시스템 환경 변수 편집”을 실행하고, 고급탭의 ‘환경 변수(N)’ 버튼을 클릭한다.
환경변수 창에서 ‘시스템 변수(S)’의 Path항목을 더블클릭한다. 환경 변수 편집 창에서 ‘새로 만들기(N)’버튼을 클릭하고 다음 경로를 입력한다. c:\Apache24\bin
(6) CMD를 관리자 권한으로 실행하고 명령 프롬프트에 다음과 같이 입력하고 실행한다. httpd -k install
설치가 끝나고 windows 보안 경고 창이 뜬다. ‘액세스 허용(A)’버튼을 클릭한다.
다은으로 httpd -k start라고 입력하고 아파치 서비스를 시작한다.
(7) 동작확인
웹문서를 작성하여 (4)번에서 설정한 웹문서 저장 위치에 저장하고 웹브라우저에서 localhost혹은 127.0.0.1를 입력하여 정상동작을 확인한다.
바로 실행하면 아파치에 기본적으로 설치되어 있는 index.php가 실행되며, 브라우저 화면에 ‘It works!’라고 뜬다.

[ PHP ] include_once( ), require_once( ), include( ), require( )

특정 php파일에  다른 php파일을 포함시키는데 필요한 함수이다. 반복적으로 사용되는 code를 별도로 관리 하면서, 필요할 때만 불러와 사용할 수 있어 유지 관리에 매우 유용한 함수이다.

include와 require의 차이는 호출 하려는 파일이 없을 경우 출력의 차이다.
include( ) : warning을 출력하고 계속 실행 됨.
require( ) : fatal error을 출력하고 실행이 중단 됨.

_once가 있고 없고의 차이는 몇 번을 호출 하느냐에 있다.
_once가 붙어 있는 경우 이전에 호출한 적이 있는지 확인한 후 한번이라도 호출한 적이 있으면 다시 호출하지 않는다.
그러나 _once가 없는 경우에는 함수를 사용할 때마다 계속 호출하게 된다.

[ PHP ] Now Document의 사용법

Now Document는 PHP5.3.0부터 지원한 것으로, Here Document와 같이 긴 문자열을 변수에 대입하거나, 출력하는 경우에 사용된다.
한 가지 차이점은 변수값이나 이스케이프문자는 값이 출력되지 않고, 표기한 그대로 출력된다 점이다.

긴 문자열을 변수에 대입하는 경우에는 다음과 같이 사용한다.
시작하는 식별자를 single quotation( ‘ ‘ )으로 감싸주는 것이 Here Document와의 차이점이다.
<?php
$변수 = <<<‘식별자’
문자열
식별자;

식별자는 통상 대문자를 사용한다. 자주 사용 되는 식별자를 보면 “EOD”, “EOM”, “EOF” 등을 사용하지만, “ABC”와 같이 어떤 문자열을 사용해도 상관없다.

다음은 Now Document에서 긴 문자열을 변수에 대입하는 예제 및 실행 결과이다.

<?php
$name = "Now Document";
echo <<<'ABC'
Here Document와는 달리 위에 선언한 변수는 출력할수 없다.<br />
아래와 같이 변수명이 그대로 출력된다.<br />
변수 출력 : $name <br />
ABC;
Here Document와는 달리 위에 선언한 변수는 출력할수 없다.
아래와 같이 변수명이 그대로 출력된다.
변수 출력 : $name

위의 출력 결과와 같이 $name변수는 값이 출력 되지 않고 문장에 기술된 대로 출력이 되는 것을 알 수 있다.

(참고) Here Document의 사용법

[ PHP ] Here Document의 사용법

Here Document는 긴 문자열을 변수에 대입하거나, 출력하는 경우에 사용된다.

긴 문자열을 변수에 대입하는 경우에는 다음과 같이 사용한다.
<?php
$변수 = <<<식별자
문자열
식별자;

식별자는 통상 대문자를 사용한다. 자주 사용 되는 식별자를 보면 “EOD”, “EOM”, “EOF” 등이 있으나, “ABC”와 같이 어떤 문자열을 사용해도 상관없다.

다음은 Here Document에서 긴 문자열을 변수에 대입하는 예제 및 실행 결과이다.

<?php
$value = <<<EOD
변수에 이렇게 긴 문자열을 대입할 때 사용한다.<br />
식별자는 EOD를 사용했다.<br />
식별자는 대문자를 사용해야 한다.<br />
EOD;

echo $value;
변수에 이렇게 긴 문자열을 대입할 때 사용한다.
식별자는 EOD를 사용했다.
식별자는 대문자를 사용해야 한다.

다음은 긴 문장을 변수에 대입하지 않고, echo를 이용하여 바로 출력하는 예제 및 실행 결과이다. 위에서 설명한 것과 같이 EOD가 아닌 ABC를 사용해도 정상으로 동작한다.

<?php
echo <<<ABC
변수에 대입하지 않고도,<br />
echo등을 이용해서 긴 문자열을 출력할 때도 사용 가능하다.<br />
식별자는 임의의 문자열을 사용해도 된다.<br />
ABC;

변수에 대입하지 않고도,
echo등을 이용해서 긴 문자열을 출력할 때도 사용 가능하다.
식별자는 임의의 문자열을 사용해도 된다.

다음은 문자열과 변수값을 함께 출력하는 예제 및 실행 결과이다.

<?php
$name = "블투맨";
echo <<<ABC
위에서 선언한 name변수도 출력할 수 있다.<br />
변수 출력 : $name <br />
ABC;

위에서 선언한 name변수도 출력할 수 있다.
변수 출력 : 블투맨

(주의) 이스케이프 문자는 출력되지 않는다.

(참고) Now Document의 사용법.