라라벨로 만들어진 프로젝트를 composer를 통해 install하려는데 다음과 같은 에러가 발생했다.
The openssl extension is required for SSL/TLS protection but is not available. If you can not enable the openssl extension, you can disable this error, at your own risk, by setting the 'disable-tls' option to true.
해결법은 php.ini
파일에 있는 값을 수정하면 되는 거였다. 그런데 php.ini-development
파일을 수정해도 문제는 해결되지 않았다.
해결에 참조한 사이트를 보면은 그 이유가 나와있었다. 아파치를 restart 해야한다고 했다.
하지만 나는 먼저 php 8.0을 사용하고 있었는데, 버전이 업그레이드가 필요해서 php8.3을 zip으로 다운로드해서 path에 php.exe
경로를 추가했음에도 불구하고 에러가 잡히지 않았다. 그리고 그 이유는 아파치 서버를 재시작했어야 한다는 것이다.
그런데 궁금한 점이 있었다. composer
는 패키지 관리자이고 아파치 서버랑은 독립된 컴포넌트인데 왜 재시작을 해야하는 것인지 의문이 들었다.
php.ini 파일을 수정한 후에 아파치 서버를 재시작해야 하는 이유는 아파치와 PHP가 함께 작동하는 방식 때문입니다. 아파치는 웹 서버로, PHP 스크립트를 처리하기 위해 PHP 인터프리터와 상호작용합니다. php.ini는 PHP의 구성 파일로, PHP 인터프리터가 초기에 로드하고 참조하는 설정들을 포함합니다.
- 아파치와 PHP의 연동: 아파치 서버에 PHP가 모듈로 설치되어 있는 경우, PHP 설정은 아파치 서버가 시작할 때 로드됩니다. 따라서 php.ini 파일의 변경사항을 적용하기 위해서는 아파치 서버를 재시작해야 합니다. 이렇게 하면 아파치가 새로운 PHP 설정을 로드하게 됩니다.
- Composer와의 관계: 반면, composer install 명령은 커맨드 라인에서 실행되는 PHP 스크립트입니다. 이 경우, PHP CLI(명령 줄 인터프리터) 버전이 사용되며, 이는 아파치를 통해 실행되는 PHP와 별개일 수 있습니다. PHP CLI는 php.ini 파일의 변경사항을 바로 반영합니다. 즉, 커맨드 라인에서 PHP 관련 명령을 실행할 때는 아파치 서버를 재시작할 필요가 없습니다.
- 결론적으로, php.ini 파일을 수정한 후에는 아파치 서버를 재시작해야 하는 이유는 웹 애플리케이션 또는 웹 서버에서 PHP 스크립트를 실행할 때 적용되는 변경사항을 반영하기 위함입니다. 반면, 커맨드 라인에서 실행되는 PHP 스크립트(예: composer install)의 경우, 아파치 재시작 없이도 php.ini의 변경사항이 바로 적용됩니다.
-chatGPT
GPT의 답변을 보니 현재 아파치로 올라가있는 서버의 설정을 변경하기 위해선 아파치를 재식작하는 것이 옳지만 그렇지 않은 경우에는 아닌 것이다.
그러면 내 문제는 아파치 서버랑 관계가 없지 않나? 싶었다. 그리고 xampp
를 이용해서 php를 다시 다운로드 하니까 문제가 해결되었다.
나는 php --ini
명령어를 실행했을 때 Loaded Congiguration File
에 ini파일이 설정이 되어있지 않았기 때문이라고 결론을 내렸다.
php를 독립적으로 다운로드하면은 php --ini
를 실행해도 설정이 되어있지 않았는데 xampp
를 이용하면 가능했다. 그 이유는 뭘까?
간단하게 말하면 php.ini
파일이 없었던 것이다. 최초에 php를 독립적으로 다운로드 하면은
php.ini-development
php.ini-production
이 있는데 둘 중 하나를 변경해야했다. 파일 확장자를 변경해야하는데 이는 파일탐색기 - 파일 확장자를 체크해주면은 강제로 변경할 수 있다.
변경 이후에는
정상적으로 인식한다.