21.12.05

future_s·2021년 12월 5일
0

php

목록 보기
1/10

오늘부터 php 학습을 시작한다. 학습은 유튜브 생활코딩 채널을 기반으로 한다. 12월 12일 이내로 다 이해하며 완강하는 것이 목표다. 오늘은 1~5강까지 들었다.

유튜브 생활코딩 PHP 재생목록

학습 내용

1. 등장 배경

html로 많아진 웹페이지를 수동으로 만들고 관리하는 것에 지침, 이에 따라 html 작성을 기계에게 만들려는 선구자들이 나선다.

PHP, JSP, ASP, Django, Ruby on Rails, Node.js 같은 기술이 이런 맥락에서 등장한 기술이다.

2. 기능

php를 이용하면 웹페이지를 자동으로 생성할 수 있다. 사용자 대신 컨텐츠를 html로 만들어준다.

목차가 적힌 웹페이지가 1억 개일 때, 목차가 하나 더 추가된다면 1억 개 페이지를 모두 수정해야하는 문제가 생긴다. 이 때 php를 쓰면 페이지 하나를 수정하여 1억 개 페이지를 한 번에 수정하는 효과를 가질 수 있다.

3. 설치(윈도우 기준)

php는 기본적으로 컴퓨터에 있는 소프트웨어가 아니므로 따로 설치해 환경을 구성해야한다.

스스로 php를 설치해 웹서버와 연동하는 건 쉽지 않기 때문에 이 작업을 대신해주는 편리한 소프트웨어 bitnami wamp가 있다.

Window Apache MySQL Php의 약자다.

비트나미 설치시 비밀번호 설정창이 나오는데 이것은 MySQL이란 데이터베이스의 관리자 비밀번호를 지정하는 단계다. 실제 서비스를 운영할 거라면 복잡한 비밀번호로 해야하나 그냥 교육용이면 쉬운 걸로 설정하면 된다. 설치 경로를 잘 기억해둬야 한다. 중간에 클라우드 어쩌구 체크는 해제하고 설치를 시작했다.

비트나미 매니저를 통해 아파치, MySQL, php를 통합해서 관리할 수 있다.

매니저 실행 - Manage Servers 탭 - 초록색이 2개가 아니라면 선택해서 start 누르기

실습은 설치된 경로의 apache2 폴더의 htdocs에서 진행. 비트나미를 통해 설치한 웹서버에 접속해서 웹페이지를 요청하면 웹서버는 htdocs 디렉토리에서 웹페이지를 찾는다. htdocs는 일종의 기지다. 설치한 직후 해당 폴더 안의 파일은 필요없으니 삭제.

그리고 코드 작성 프로그램은 atom을 사용하기에 아톰 역시 설치해준다. 설치를 마치고 처음 열면 Atom is not currently set as the default handler for atom:// URIs. Would you like Atom to handle atom:// URIs? 라는 질문이 뜨는데 Yes를 선택해줬다. 뭔소린지 검색하니 브라우저 프로토콜이라고 한다. 이 블로그에 자세한 설명이 있다.

아톰에서 htdocs폴더를 열어 test.php 파일을 만들어 저장하고(따라할 때 글자를 잘못 봐서 test대신 text라는 제목을 달았다ㅋㅋ)

사진 속과 같이 코드를 작성해준 뒤에 브라우저에서 http://127.0.0.1/(작성파일제목).php
로 들어가면 php 정보가 뜬다. 그러면 성공적으로 실습할 준비가 된 것이다.

3-1. php 환경 설정 변경

실수했을 때 어디서 실수했는지 알 수 있는 법. 비트나미 디렉토리에서 php폴더로 들어간다. php.ini 파일(이름이 php이고 유형이 구성설정인 파일) 위에서 마우스 오른쪽 클릭 - 편집

나오는 게 php 설정 파일이다. 소프트웨어의 기본적인 동작 방법을 여기서 필요에 따라 다르게 바꿀 수 있다. 이 파일을 수정하면서 설정을 바꾼다.

1) 파일에서 ctrl+f 누르고 display_errors 검색. 두번째 검색 결과인 display_errors = Off에서 Off를 On으로 변경하고 저장하기, 에러를 화면에 나타낸다는 의미

- 디폴트가 display_errors = Off인 이유?
에러가 눈에 보인다는건 나뿐만 아니라 사용자 눈에도 보인단 뜻이다. 근데 그 에러메시지에 패스워드, 디렉토리 경로 같은 중요 정보가 포함될 수 있다. 공격의 단서가 될 수 있음. 내 시스템에 대해 최대한 외부에서 알 수 없도록 숨기는 게 필요하다. 실제 서비스할 땐 꺼줘야 한다.

2) opcache 검색
opcache.enable=1
1이면 켜진 상태, 0으로 바꾸기
opcache.enable은 php 어플리케이션의 성능을 높이기 위한 설정. 켜져있다면 같은 시간에 php가 더 많은 웹페이지를 만들어낼 수 있다. 그러나 내가 파일을 수정해도 바로 반영되지 않고 조금 시간이 지난 후에 된다. 그래서 개발할 땐 0으로 해두기.

설정 파일 저장 후에 비트나미 매니저를 켠다. 그리고 Manage Servers 탭에서 Apache Web Server를 선택하고 Restart

- php 환경 설정을 바꿨는데 아파치를 재시작하는 이유?
지금 쓰는 php는 아파치 웹 서버에 기생하고 있는 상태. 그런데 php를 껐다 켜는 방법은 없고 아파치를 껐다 켜면 php.ini를 그때 읽어서 반영하기 때문이다. 사용자들이 웹페이지 접속할 때마다 php.ini를 읽어야한다면 많이 느리니까 재시작할 때만 한 번 환경 설정을 반영한다.

Manage Servers 탭에서 Apache Web Server를 선택하고 Configure를 누른 후에 Open Access Log를 눌러보자.

내가 설치한 웹서버에 사람들이 접속할 때마다 남는 접속 기록이다.

Error Log는 display_errors 설정이 꺼져있어도 기록된다.

4. 원리

php의 매커니즘 : 웹브라우저와 서버가 어떻게 동작하는가?

사용자가 웹브라우저에 index.html을 쓰면 웹서버가 html을 찾아 읽어서 웹브라우저에게 전송해준다. 그리고 브라우저는 그걸 읽어서 표시해주면 과정이 끝난다.

그런데 index.php를 쓰면 웹서버는 확장자가 php인 파일은 자기 소관이 아니란 걸 안다. 그렇게 설정돼있기 때문. 웹서버는 그걸 처리할 수 있는게 php 프로그램이란 걸 아니까 그곳으로 파일처리를 위임한다.

php 프로그램은 htdocs에서 해당 파일을 열어 php 문법에 따라 해석해서 최종적으로 html파일을 찍어낸다. 생산하는 셈. 그렇게 만들어진 html을 웹서버가 웹브라우저에 전송하면서 과정이 마무리된다.

확장자를 다르게 한 두 index파일을 생성하고 시간을 적어본다.

  • html의 경우
<body>
  2021-12-05 23:13:30
</body>
  • php의 경우
<body>
  <?php
    echo date('Y-m-d H:i:s');
  ?>
</body>

-> php 파일을 브라우저로 열 경우 reload할 때마다 현재 시간으로 변경된다.

사용자가 index.html을 요청하면 웹서버는 그대로 읽어서 그대로 전송해줄 뿐이다. 한 번 만든 index.html은 언제나 똑같은 정보를 보여준다.

하지만 php는 웹서버가 위임해서 php프로그램이 php를 열어본다. 열어본 파일에서 html코드는 내버려두고 php 코드들을 해석해서 동작한다. 위의 예시로 따지면 현재시간 결과만을 웹서버에게 보내면 웹서버가 그걸 웹브라우저에게 보내준다. 웹브라우저는 php코드가 없는 순수한 html만으로 이뤄진 정보를 받을 수 있고 php가 세상에 있는지도 모르고 그냥 html을 화면에 표시한다.

기본적으로 html은 한 번 파일이 만들어지면 언제나 똑같이 동작하지만(정적) php는 웹페이지를 생산할 수 있는 능력을 가지고 있기 때문에 reload할 때마다 페이지를 동적으로 생산할 수 있다.

- php 기본 문법

바깥쪽은 그대로 출력
<?php 
php 문법에 따라 처리되는 부분
?>
바깥쪽은 그대로 출력

5. 데이터 타입 개요

프로그래밍 언어를 배운다함은 데이터를 어떠한 의도에 따라 처리하려고 함이다. 프로그래밍을 하며 중요한 점이 그 데이터가 어떠한 데이터 형식(타입)을 제공하는가를 알아가는 과정과 각각의 타입별로 언어가 어떻게 처리하는지 방법을 알아가는 과정이다.

php data types를 검색

https://www.php.net/manual/en/language.types.intro.php
php 공식문서에 잘 나와있다.
이걸 하나하나 알아가는 게 언어를 깊게 이해하는데 중요한 트랙이다.

이 중에서 가장 익숙한 숫자와 문자를 먼저 알아본다.

어려운 점

그냥 워밍업 정도라 아직은 이해하기 어려운 점이 없었다. 단지 비트나미 설치가 엄청 오래 걸린 걸로 봐서 컴퓨터 성능이 앞으로의 실습을 따라갈 수 있을지 좀 걱정이다.

해결 방법

컴퓨터를 바꾸지 않는 이상 해결 불가능

느낀 점

이번주 내내 빡세게 달려야 할 것이다. 정말 간만 보고 끝낸 느낌이라 얼른 다음 진도를 나가고 싶다.

profile
미래는 현재의 내가 만들어간다

0개의 댓글