CI 묻고 답하기

제목 php8.1.1 , CI4.1.8 에서 Paths.php 의 Parse 오류
카테고리 CI 4 관련
글쓴이 RedCat 작성시각 2022/02/04 21:01:22
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 6170   RSS

안녕하세요.

php8.1.1 , CI4.1.8 환경에서 home 이 아닌 하위 주소에서 Paths.php 에서 아래의 오류가 발생합니다.

Parse error: syntax error, unexpected '.', expecting ',' or ';' in /home/ci4/app/Config/Paths.php on line 28

이상하게도 domain.com 으로 접속시 오류 발생 안하고, domain.com/login 등 하위 경로들에서만 발생합니다.

Paths.php 의 해당 코드는 문제가 없습니다. 혹시나 싶어 연결자(.)를 지우고 경로를 바로 입력하면 $appDirectory 부분에서 발생합니다.

public $systemDirectory   = "/home/ci4/system"; // 오류 발생 안함
public $appDirectory      = __DIR__ . '/..'; // 오류 발생함

그리고 동일한 컨트롤러(Home)으로 라우트 설정 해도 마찬가지입니다.

$routes->get('/', '\App\Controllers\Home::index'); // domain.com 오류 발생 안함
$routes->get('/login', '\App\Controllers\Home::index'); // domain.com/login 오류 발생함

login 부분을 삭제 하고 Login 컨트롤러를 Home 과 동일한 코드로 해도 마찬가지입니다.

그런데 서버가 아닌 피씨에 xamp에서는 에러가 안나네요.

해결 방법이 있을까요?

이것 때문에 미춰버리겠습니다.

좀 도와 주십쇼~!

 

 

 다음글 라우팅관련해서 질문합니다. (7)
 이전글 설정 문의 드립니다. (3)

댓글

RedCat / 2022/02/06 01:16:18 / 추천 0

자답입니다.

기존 프로그램 걷어 내고 CI4 새로 설치해서 테스트 해보니 동일현상 발생하여,

꼭 프로그램 쪽 문제는 아닌거 같아서 확인해보니 문제는

apache  에서 procy_fcgi 로 php가 실행되면 htaccess가 먹통이 된다는 것입니다.

아마 그로인해 404 호출이나 이런 부분에서 위와 같은 에러가 있었던거 같습니다.

fcgi 를 사용하지 않는 것이 좋겠지만 어쩔수 없어서 찾아보니

vhosts.conf의 VirtualHost 에 아래 설정을 추가하니 htaccess가 정상 작동 합니다.

<Proxy "fcgi://127.0.0.1:9000/home/user/public/$1/">
        ProxySet enablereuse=On
</Proxy>
<FilesMatch "\.php$">
        SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

 

참고사이트

https://serverfault.com/questions/398834/understanding-apache-2-4-mod-proxy-fcgi-and-rewriterules-in-htaccess

- ProxyPassMatch 를 사용하면 htaccess가 적용 안된다는 답글이 결정적 힌트

https://serverfault.com/questions/450628/apache-2-4-php-fpm-proxypassmatch/672969#672969

- 제 경우의 해결 방법은 아니였지만만 참고할 필요 있을거 같습니다.

https://ma.ttias.be/apache-2-4-proxypass-for-php-taking-precedence-over-filesfilesmatch-in-htaccess/

- 이 아저씨의 설명글이 정답!

한대승(불의회상) / 2022/02/07 15:57:52 / 추천 0

@RedCat PHP-FPM을 사용할 기회가 없어 별 도움이 못되어 드렸네요.

좋은 정보 공유 감사합니다.