[Mac] MacOS에 PHP 설치 (8.3)
요즘 PHP가 점점 그리워진다. 리액트나 넥스트, Express등의 Javascript 환경에 적응할 수록 뭐가 이리도 거쳐야 하는 단계가 많은지 번거로움만 늘어간다. 예전처럼 웹서버랑 mysql 설치해 놓고 대충 파일 하나 만들어서 바로 브라우저로 결과를 확인하던 시절이 좋았던 것 같다. Javascript 환경은 너무 할게 많다. 그래서 PHP를 다시 돌아보던 중 최신 MacOS에서는 기본으로 설치되어 있던 apache가 제거되었음을 알게되었고 하나하나 손수 PHP 구동 환경을 구축해 줘야 했다.
#01. PHP 구성
[1] PHP 설치하기
먼저 homebrew를 업데이트한다.
$ brew update
그 다음 php를 내려받을 수 있는 저장소 정보를 추가한다.
$ brew tap shivammathur/php
최신 안정화 버전인 8.3
를 설치했다.
$ brew install php@8.3
[2] php.ini 파일 수정
Mac이나 Linux의 Aapche는 직접 설정 파일을 수정하는 형태로 환경설정이 진행된다.
내 경우에는 php 설정파일의 위치가 /opt/homebrew/etc/php/8.3/php.ini
였다. 이 파일을 vi 편집기로 수정한다.
$ vi /opt/homebrew/etc/php/8.3/php.ini
꼭 vi 편집기로 수정하지 않아도 된다. VSCode가 설치되어 있다면 아래 명령을 통해 VSCode로 수정 가능하다.
$ code /opt/homebrew/etc/php/8.3/php.ini
설정항목 | 값 | 설명 |
---|---|---|
short_open_tag | On | <?PHP ... ?> 대신에 <? ... ?> 와 같은 짧은 스크립트 블록을 사용할 수 있다. |
post_max_size | 50M | POST 방식의 최대 전송량이다. 넉넉히 설정한다. |
upload_max_filesize | 100M | 전송 가능한 업로드 파일 용량이다. 넉넉히 설정한다. |
max_file_uploads | 20 | 한번에 업로드 가능한 최대 파일 수이다. 넉넉히 설정한다. |
date.timezone | Asia/Seoul | 타임존 지역을 설정한다. |
#02. Apache 구성
[1] Apache 설치하기
우선 Mac에 기본으로 탑제되어 있는 버전을 완전히 중지한다.
$ sudo apachectl -k stop
Homebrew를 이용해 새로운 httpd를 설치한다.
$ brew install httpd
[2] httpd.conf
파일 수정
Mac에서 httpd를 설치했을 때 설정 파일의 경로는 /opt/homebrew/etc/httpd/httpd.conf
였다.
vi 편집기로 설정파일을 연다. sudo 권한은 필요 없었다.
$ vi /opt/homebrew/etc/httpd/httpd.conf
마찬가지로 아래 명령을 통해 VSCode로 편집할 수 있다.
$ code /opt/homebrew/etc/httpd/httpd.conf
만약 이 경로에 파일이 없다면 아래 명령으로 설정 파일을 찾아야 한다.
$ find / -name "httpd.conf"
참고
애플 실리콘 맥(M1, M2)의 경우 기존 인텔 맥과 저장되는 위치가 다르므로 주의해야한다.
m1, m2 와같은 애플 실리콘 맥인 경우 설치 경로가 「/usr/local/」 이 아니고 「/opt/homebrew/」 인 경우가 많아 주의해야한다.
(1) 포트 설정
대략 52라인 부근에 Listen
설정을 수정하여 80번 포트로 실행되도록 한다.
Listen 80
(2) mod_rewrite 설정
대략 181라인 부근에 아래와 같은 구문이 주석처리 되어 있다. 해당 주석을 해제한다.
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
(3) PHP 모듈 연결
(2)
에서 설정한 mod_rewrite
모듈 설정 구문 아래에 다음 구문을 추가한다.
설정 전에 /opt/homebrew/opt/php/lib/httpd/modules/libphp.so
파일이 존재하는지 먼저 확인해야 한다. 파일이 없다면 libphp.so
파일의 위치를 정확히 확인한 후 설정하도록 하자.
LoadModule php_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so
(4) DocumentRoot 설정
웹 사이트 Root 디렉토리를 설정한다.
SSL 인증서 설정시 보통은 80번 포트를 SSL로 리다이렉트 되도록 설정하지만 Let’s Encrypt를 사용할 경우 80번 포트로의 접근이 가능해야 자동 갱신이 가능하므로 80번 포트를 남겨놓기 위해 이 설정을 변경하지 않는 것이 좋다.
DocumentRoot "/Users/사용자계정명/Sites"
<Directory "/Users/사용자계정명/Sites">
#
# 주석...
#
Options Indexes FollowSymLinks
#
# 주석...
#
AllowOverride All
#
# 주석...
#
Require all granted
</Directory>
(5) PHP 모듈 설정
httpd.conf
파일 맨 하단에 아래 구문을 추가한다.
AddType application/x-httpd-php .html .php
AddType application/x-httpd-php-source .phps
PHPIniDir /etc
#03. 아파치 서버 실행
아래 명령어 중에서 필요한 항목을 선택적으로 사용한다.
명령 | 설명 |
---|---|
brew services list |
서비스 중인 프로세스 확인 |
brew services start httpd |
아파치 서비스 시작 |
brew services stop httpd |
아파치 서비스 중지 |
brew services restart httpd |
아파치 서비스 재시작 |
서비스를 시작하면 부팅시마다 자동 실행된다.
결과 확인하기
httpd.conf
에서 DocumentRoot로 설정한 디렉토리에 index.php
파일을 생성하고 아래 코드를 작성한다.
<? phpinfo(); ?>
웹 브라우저로 http://localhost
으로 접속하여 결과를 확인한다.