[PHP] PHP란 ? PHP의 설치

Dev_Honey·2022년 10월 6일
0

PHP

목록 보기
1/11
post-thumbnail

PHP 란?

Server Side Script 이다.
PHP라는 이름은 원래 Personal Home Page Tools였는데, 지금은 PHP: Hypertext Preprocessor의 재귀 약자를 사용하고 있다.
원래는 perl로 만들어졌는데, C언어로 바뀌었다.


특징

PHP의 큰 특징 중 하나는 무상태성(Stateless) 으로, HTTP 프로토콜과 마찬가지로 상태를 유지하지 않는 성질이다. PHP 웹 서버에 요청을 하면, 해당 스크립트를 실행한 뒤 완전히 종료하고, 그 다음 새 요청이 들어오면 처음부터 다시 시작하는 방식이다. 이 때문에 PHP에서 싱글톤 패턴을 구현하면, 객체는 한 요청에 의한 작업이 끝날 때까지만 유지된다. 이러한 특성으로 인해 메모리 관리가 쉽고, 사용자(브라우저 요청)의 잘못된 입력으로 오류가 났을 때 개별적으로 처리하게 되므로 안전하지만, 상태를 유지할 수 없기에 PHP로는 DB 커넥션 풀을 만들 수가 없다.

장점

  • PHP는 간편하게 서버에 올릴 수 있다.(IIS, Apache, Nginx 등) PHP 인터프리터에서 PHP 파일을 실행할 때마다 파일 내용을 확인 후, 바뀐 부분이 없으면 캐시를 실행하고, 바뀐 부분은 다시 해석한 뒤 캐시 하는 방식으로 작동해서 업로드만 하면 되므로 간편하다.
  • 위의 특징으로 인해 프로젝트가 커지면 빌드시간이 늘어나는 다른 언어들과 달리 PHP는 개발이나 배포할 때 빌드가 필요 없다.
  • PHP는 요청할 때마다 새로 시작하기 때문에 오류에 대해 덜 민감하다. 예를 들어 다른 언어로 작성한 서버는 어떤 사용자가 잘못된 요청을 보내서 프로그램이 실패하면 해당 서버가 멈추게 되어 재부팅이 필요할 상황이 올 수도 있는데, PHP는 새 요청이 왔을 때 프로그램을 처음부터 시작하므로(Stateless) 사용자가 올바른 요청을 보내면 정상 작동한다. 오류를 개별적으로 처리하는 것이다.
  • PHP는 등장 당시 C언어로 웹서버를 작성하는 CGI에 비해 배우기 쉬웠고,사용자에게 보여지는 HTML 페이지의 템플릿도 지원해서 쉽게 웹서버를 만들 수 있었으며, 웹 개발에 필요한 관련 함수들이 내장되어 있어서 사용자가 급격하게 늘어났다.
    • CGI (Common Gateway Interface) 는 웹서버가 보통 CGI 프로그램 혹은 CGI 스크립트라고 부르는, (웹페이지 내용을 만드는) 외부 프로그램과 통신하는 방법을 정의한다. 웹사이트에서 동적인 페이지를 만드는 가장 흔하고 간단한 방법이다.

단점

  • 전체적으로 잘 설계된 언어는 결코 아니다. 예를 들어 내장함수나 인자 이름 규칙에 일관성이 부족하다. 라스무스가 처음 PHP를 만들 당시에는 템플릿 언어로 시작했다가 PHP 2.0 이후에 본격적인 프로그래밍 언어로 바뀌었기 때문이다. 기본적인 이름은 C언어 함수에서 가져오고, 그 이후 다른 함수들이 추가되었는데, 그러다보니 이름과 분류가 제대로 되어있지 않았다. 이것 때문에 많이 까였다. 7.0 이후에는 계속 버전업하면서 바뀐 이름 규칙에 맞게 수정한 함수를 지원하는 등 점차 나아지는 추세다.
  • 정의되지 않은 변수(undefined)를 쓸 수 있었다. 다만 이 단점은 최근 버전에서 해결되었는데, PHP 8.0부터는 인터프리터 알림에서 경고로 상향했다. PHP 9.0부터는 정의되지 않은 변수를 쓸 수 없다(즉, 에러 처리). 정의되지 않은 변수를 쓰는 것이 단점인 이유는, 없는 변수를 써도 무시하기 때문에 개발자가 실수를 하게되기 때문이다.
  • 옛날 버전들은(PHP 7.4까지) 정의되지 않은 변수는 null로 형변환하고, 정의되지 않은 변수를 사용했다는 알림만 보여줬다. 알림은 에러 설정을 E_ALL로 해놔야 표시된다. 느슨한 ==가 아닌 === 을 쓰더라도 같다는 결과가 나온다. 이를 확인하려면 get_defined_vars 함수(지역 변수) 또는 $GLOBALS 변수(전역 변수) 등을 통해 선언된 변수의 목록 배열을 얻어온 다음, 그 배열에 변수가 포함되어 있는지를 확인해야 한다. 그러나 null과 구분되지 않는 특성을 이용해 보통은 isset 함수로 체크한다.
  • 스크립트 언어라는 특성상 인터프리터 방식을 사용하는 만큼 성능에 한계가 있었으나, PHP 8.0 버전부터는 인터프리터에 JIT(Just-in-Time)이 지원되어 기존 7.4 대비 2배 가량의 성능 향상이 있다.
    • JIT 컴파일러를 사용하면서 기존 기계어로 번역하는 과정에서 많은 속도향상이 되게 된 것!

설치

https://bitnami.com/stacks
에 들어가서 설치를 할 것이다. bitnami는 php mysql, php wordpress등의 패키지를 설치할 수 있게 도와준다.


들어가서 MAMP(MacApacheMysqlPHP) 찾아서 클릭 !

이렇게 뜨게 된다.

다운로드 받은 후 설치를 진행해준다.

Next -> 필요한 프레임워크를 선택후 next - > 본인은 laravel이 나중에 필요하기때문에 같이 설치

각종 패키지들이 설치가 된다.

finish 누르면 설치 완료!!

설치가 완료되면 로컬호스트의 ip로 된 페이지가 뜨게 된다.
127.0.0.1:8080 === 127.0.0.1:8000/index.html
아래의 경로는 index.html 파일의 위치이다.
/Applications/mampstack-8.1.10-0/apache2/htdocs

이 html을 수정할건데 기본적으로 설치되어있는 텍스트편집기를 사용할 것이다.
텍스트 편집기를 열고 위의 경로를 찾아가 index.html을 여는데 옵션에 리치 텍스트 명령 무시 체크 박스를 클릭해주고 파일을 오픈한다.

그러면 이렇게 html 소스 코드를 볼 수 있고 수정할 수 있다.
간단하게 바디 밑에 test라는 문구를 넣어보겠다.

그리고 다시 index.html을 열어보면 Test라는 word를 확인 할 수 있다.
그리고 지금 127.0.0.1:8080으로 apache서버가 돌아가고 있는 중이다.(bitnami를 사용하면 apache 서버가 자동으로 run 된다.)

127.0.0.1:8080 또는 사진과 같이 localhost:8080/index.html로 사용하면 된다.


참조

생활코딩 PHP(https://www.opentutorials.org/course/3018)
나무위키 PHP(https://namu.wiki/w/PHP)


profile
자습서 같은 공부 블로그 만들기!

0개의 댓글