[PHP] 서버 이전 후 php 코드가 오류도 없이 실행되지 않는다면
오류 로그를 보거나 기타 파일을 실행해도 오류 메시지가 전혀 없고 F12 개발자 도구에서 php 소스 코드가 주석 처리된 채로 그대로 보이는 문제가 있었습니다.
마치 모든 php 코드를 주석 처리해버리고 무시하는 것 같았죠
실제 파일 속 코드는 위와 같은 모습입니다.
<? ?> 사이 어떠한 코드도 오류 표시 없이 실행되지 않는 모습이었습니다.
해결방법
너무나도 간단한 방법으로 해결할 수 있습니다.
<?를 <?php로, <?=를 <=echo 로 바꾸는 것이죠.
이를 php에서는 짧은 태그, short_open_tag라고 합니다.
php.ini 파일에서 짧은 태그 활성화하기
php.ini 파일에서 짧은 태그를 활성화해서 이 문제를 해결해 보도록 하겠습니다.
이 가이드를 따라하기 전에, 이 문제가 맞는지 확인하기 위해 위 변경사항을 수동으로 몇 개만 고쳐서 실행해 보세요.
잘 작동한다면 계속 따라 해 쉽게 고칠 수 있지만 여전히 작동하지 않는다면 이 가이드는 유용하지 않을 수 있습니다.
먼저, 각자의 방법으로 php.ini 파일을 찾아주세요.
AWS 라이트세일 EC2에서 Bitnami LAMP를 돌리는 저의 php 설정 파일은 /opt/bitnami/php/etc 속에 있었습니다.
저는 SSH 쉘 속에서 작업할 텐데, 원활하지 못하신 분은 FTP 또는 원격 파일 솔루션으로 php.ini를 가져와서 고치셔도 됩니다.
sudo nano /opt/bitnami/php/etc/php.ini
또는, sudo find / -name php.ini 명령으로 검색하세요.
그런 다음 Ctrl+W로 'short_open_tag ='를 검색해서 찾아주세요.
만약 'short_open_tag ='가 하나도 없다면, 코드 맨 마지막에 직접 적어주시면 돼요.
찾으셨다면 주석을 해제해서 켜주시면 됩니다! 저는 두 번째에서 찾았습니다.
short_open_tag = On
변경하셨다면 Ctrl+X로 저장하고 나와주시면 됩니다.
참고: php8에서는 On이 아니라 1입니다.
이제 php 또는 LAMP 스택을 재시작하면 모든 게 끝납니다.
제가 쓰는 Bitnami LAMP 스택이 없다면 그냥 php 서비스를 껐다 켜면 됩니다.
sudo /opt/bitnami/ctlscript.sh restart