본문으로 바로가기

codeigniter4 + mac + local settings

category Backend/PHP 2024. 7. 18. 11:52
반응형

왜 아직도 내가 이걸 해야하는지 모르겠다...

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" 맨위에 나오는 걸로 하면 될 듯

  1. :52 이동하여 Listen 부분에 원하는 포트(사용가능한) 지정 -> 9100
  2. :181 이동하여 주석 해제 LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
  3. 바로 아래에 다음 코드 추가
  4. # 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 ```

  1. 마지막으로 shift+G 명령어를 통해 맨 밑으로 가서 O 명령어로 편집 모드로 간다음 다음을 추가
  2. 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