왜 아직도 내가 이걸 해야하는지 모르겠다...
PHP 설치
brew install php@7.4
brew install php@8.0
원하는 버전으로 설치
다들 php.ini 에서 짧은 태그를 허용시키는데 난 안했다
httpd 또는 apache2 설치
brew install httpd
apache2 를 설치하든 httpd 를 설치하든 하나 설치
vi /usr/local/etc/httpd/httpd.conf
httpd.conf
파일을 연다. 파일 위치는 find / -name "httpd.conf"
맨위에 나오는 걸로 하면 될 듯
- :52 이동하여 Listen 부분에 원하는 포트(사용가능한) 지정 -> 9100
- :181 이동하여 주석 해제
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
- 바로 아래에 다음 코드 추가
# php 8 이전인 경우(7 이하) LoadModule php7_module /usr/local/opt/php@7.4/lib/httpd/modules/libphp7.so
php 8 이상인 경우
LoadModule php_module /usr/local/opt/php@8.0/lib/httpd/modules/libphp.so
4. 공백을 추가하고 위의 내용을 추가 했다면 대략 :194 로 이동하여 `User`, `Group` 을 각각 `유저명`, `staff` 로 수정
User {userName}
Group staff
5. :216 또는 `/ServerAdmin` 검색하여 로컬에서 사용할 주소 설정. 포트는 지정 안해도 된다
6. :249 이동하여 또는 `/DocumentRoot` 검색하여 `index.php` 파일이 있는 곳으로 경로 지정하고
안의 내용 중 `AllowOverride None` 부분에서 `None -> All` 수정
7. :283 이동하여 `index.html -> index.php` 수정 (안하면 찜찜). 만약 index 확장자가 다르면 그걸로 지정
DirectoryIndex index.php ```
- 마지막으로
shift+G
명령어를 통해 맨 밑으로 가서O
명령어로 편집 모드로 간다음 다음을 추가 AddType application/x-httpd-php .html .php AddType application/x-httpd-php-source .phps PHPIniDir /etc
그리고 저장 :wq 하고 httpd 실행
brew services start httpd
codeigniter 4
코드이그나이터 4 로컬 설정 방법 간단하게 정리
.gitignore
에 .env
처리가 되어있는게 좋다.
최상위 root 경로에 env 가 있거나 관련 파일이 있다면 .env 로 수정하고 다음 처럼 관련 내용을 설정한다.
# CI_ENVIRONMENT = development
CI_ENVIRONMENT = production
#--------------------------------------------------------------------
# DATABASE
#--------------------------------------------------------------------
database.tests.hostname = hostname
database.tests.database = database
database.tests.username = username
database.tests.password = password
database.tests.DBDriver = MySQLi
database.tests.port = 3306
database.tests.hostname = hostname
database.tests.database = database
database.tests.username = username
database.tests.password = password
database.tests.DBDriver = MySQLi
database.tests.port = 3306
따로 추가하거나 수정한 것만 기입했음 나머진 올 주석되어 있어서 건들게 없었다.
.htaccess 설정
public > index.php 로 실행이 되면 되는데 안되는 경우 .htaccess 를 확인 혹은 다음 처럼 수정
아래 코드는 composer 로 설치한경우 기본적으로 있는 값이며 필요시 얘네 github 가서 가져와도됨
# Disable directory browsing
Options All -Indexes
# ----------------------------------------------------------------------
# Rewrite engine
# ----------------------------------------------------------------------
# Turning on the rewrite engine is necessary for the following rules and features.
# FollowSymLinks must be enabled for this to work.
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
# If you installed CodeIgniter in a subfolder, you will need to
# change the following line to match the subfolder you need.
# http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase
# RewriteBase /
# Redirect Trailing Slashes...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Rewrite "www.example.com -> example.com"
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
# Checks to see if the user is attempting to access a valid file,
# such as an image or css document, if this isn't true it sends the
# request to the front controller, index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\s\S]*)$ index.php/$1 [L,NC,QSA]
# Ensure Authorization header is passed along
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
ErrorDocument 404 index.php
</IfModule>
# Disable server signature start
ServerSignature Off
# Disable server signature end
만약 host/index.php/Route주소/index 가 정상적으로 된다면 .htaccess 설정 문제이고 이것도 안된다면
httpd 쪽에 DocumentRoot 경로 문제거나 AllowOverride(전부다 말고 DocumentRoot 안의 설정만) 가 All 이 아니거나 할 것이다
그럼에도 404만 뜬다면 본인의 php 설정 버전과 프로젝트에 composer 에서 받아들이는 php 버전이 몇인지 비교해보고 php 버전을 수정해야 한다.
composer install 했을 때 의존성이 정상적으로 받아지면 php 버전이 올바르게 된 것이고
^php7.0 php8.0 막 이런식이면 8.0 을 쓰고있으나 지금 7.0 이 아니니 안된다는 식이라서 버전을 낮춰야한다
버전을 낮출 경우 아까 했던 httpd 에서의 module 부분의 버전마다 설정이 다르니 꼭 같이 바꿔줘야한다
만약 로깅이 필요하다면 다음의 경로에서 각각 확인 가능
최상위 root 경로에 writable > logs > log-Y-m-s.log 파일 생성됨
/usr/local/var/log/httpd/ 경로에 access_log, error_log 파일 생성
'Backend > PHP' 카테고리의 다른 글
PHP에서 Python 파일 실행하기 (4) | 2020.12.30 |
---|---|
PHPExcel (0) | 2020.11.05 |
XML to JSON (NOCDATA) (0) | 2020.09.21 |
MYSQL PASSWORD와 비밀번호 비교 (0) | 2020.09.02 |
CURL SSL 무시 및 multipart form-data POST 요청 (0) | 2020.07.31 |