인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

geol2님의 프로필 이미지
geol2

작성한 질문수

PHP 7+ 프로그래밍: 객체지향

28 - 지원 (Support; ServiceProvider, Theme)

나만의 프레임워크 작성 후, 운영환경 배포에 관한 문의 드려요

해결된 질문

작성

·

311

·

수정됨

0

안녕하세요. 강의를 듣고 공부해보고 있는 개발자입니다.

일단 너무 감사하게 잘 듣고 있습니다. 이런 강의는 잘 없어서 나쁜 구조(클래스 중복, 날로 해버리는 코드)로만 유지보수를 해오고 있었었고 개선하고 싶은 생각이 많이 들었거든요. PHP에 숨겨진(잘모르는) 기능도 알아가게 되서 무한 감사합니다.

다름이 아니라 nginx 를 사용해서 쓰고 싶은데 잘 작동하지 않는 것 같아 질문드립니다.

php -S localhost:8080 -t public 커맨드를 이용했을 땐, 크게 문제가 없는 상태입니다.

 

한 가지 예로 nginx에 연동하면 라우팅 쪽이 원하는대로 작동되지 않습니다.

get '/call' 에서 resource/call.php 를 호출해서 echo 'call' 을 실행시키게 해두었는데

get '/call' 시, /resource/index.php 내의 echo 'hello World' 가 출력이 되고 있어서 어떤 것을 확인하면 좋을지 몰라 질문드립니다.

 

nginx에 설정에 문제로 생각이 들긴하는데, 잘 모르겠습니다.

PHP는 8.1을 사용하고 nginx설정은 다음과 같습니다.

server {
        listen 80;
        listen [::]:80;

        root /var/www/html/app/public;
        index index.php;

        server_name localhost;

        error_log  /var/www/html/log/nginx/error.log;
        access_log /var/www/html/log/nginx/access.log;

        charset utf-8;

        location / {
                try_files $uri $uri/ /index.php?$query_string;
        }

        location ~ \.php$ {
                fastcgi_pass unix:/run/php/php8.1-fpm.sock;
                fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
                include fastcgi_params;
        }
}

답변 1

1

정상우님의 프로필 이미지
정상우
지식공유자

안녕하세요. 우선, 라우팅을 먼저 확인해보는 것이 좋을 것 같습니다. /call 을 불렀을 때 index.php 가 실행되었다는 것은 일단 OK, 그 다음은 index.php, 즉 프론트 컨트롤러에서 실행된 라우터에 의해 사용자의 요청이 /call 에 도달하여 컨트롤러가 실행되는지 확인하는 것인데, 내장 서버에서는 동작하나, 범용 웹서버에서 동작하지 않는 경우 $_SERVER 를 확인해보는 것도 방법입니다. 아래의 질문을 참고해보시기 바랍니다.

https://www.inflearn.com/questions/52447/apache%EC%97%90-%EC%98%AC%EB%A6%B4%EA%B2%BD%EC%9A%B0

위의 내용은 아파치에서 실행한 것이지만, nginx 에서도 같은 맥락으로 문제가 발생했을 수도 있습니다.

geol2님의 프로필 이미지
geol2
질문자

감사합니다! 라우팅 문제였네요~

첨부해주신 링크를 통해서 잘 해결했습니다.

geol2님의 프로필 이미지
geol2

작성한 질문수

질문하기