안녕하세요.
Mojave로 업그레이드 후 로컬에서 잘 작동하던 웹사이트들이 403 Forbidden, 404 Not found 및 웹사이트 로딩을 잘 못하는 현상이 발생하였습니다.
구글링 해보니 기본으로 설치되어 있는 아파치가 homebrew를 이용해 설치한 php7.2 모듈을 로드하지 못해 발생하는 에러인 것으로 생각됩니다.
$ sudo apachectl configtest 를 수행했을 때 아래와 같은 에러가 난 다면 저와 비슷한 현상일 것 같습니다.
httpd: Syntax error on line 177 of /private/etc/apache2/httpd.conf: Cannot load /usr/local/opt/php/lib/httpd/modules/libphp7.so into server: dlopen(/usr/local/opt/php/lib/httpd/modules/libphp7.so, 10): no suitable image found. Did find:\n\t/usr/local/opt/php/lib/httpd/modules/libphp7.so: code signature in (/usr/local/opt/php/lib/httpd/modules/libphp7.so) not valid for use in process using Library Validation: mapped file has no cdhash, completely unsigned? Code has to be at least ad-hoc signed.\n\t/usr/local/opt/php/lib/httpd/modules/libphp7.so: stat() failed with errno=22
다른 방법들도 있겠지만 제가 해결한 방법은 homebrew를 이용해 아파치도 다시 설치 하는 방법입니다.
간단하게 요약하면 아래의 해결방법을 수행하시면 됩니다. (https://github.com/Homebrew/homebrew-core/issues/32436)
- Install homebrew apache (brew install httpd)
- disable the default apache (sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist)
-> 저 같은 경우는 등록된 것이 없는지 에러가 나서 스킵했습니다.
- update the httpd configuration for php7 module (/usr/local/etc/httpd is the path for new apache)
- LoadModule php7_module /usr/local/opt/php/lib/httpd/modules/libphp7.so
- brew services restart httpd
- Default configuration of http of homebrew uses port 8080 - you can update the configuration in httpd.conf to 80
한가지 참고로 $ brew install httpd 수행 시 아래와 같은 에러가 날 경우,
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
Error: Failure while executing; `git config --local --replace-all homebrew.private true` exited with 1.
이 명령어를 수행하여 xcode-select 를 설치하시면 됩니다.
$ xcode-select --install
$ xcode-select --reset
homebrew로 설치된 아파치의 위치는 /usr/local/etc/httpd 입니다.
디포트 포트가 8080, DocumentRoot는 /usr/local/var/www 로 설정되므로
/usr/local/etc/httpd/httpd.conf 파일을 원하는 포트와 위치로 변경 후 재기동 ($ brew services restart httpd) 하시면 됩니다.