PHP / Reference / phpinfo()

phpinfo()는 현재 실행 중인 PHP의 버전, 설정값, 로드한 확장 모듈과 실행 환경을 출력하는 함수입니다. PHP를 실행하는 웹서버에서 호출하면 정보 표가 있는 HTML 페이지가, 명령줄에서 호출하면 텍스트가 나옵니다. 설정을 바꾸는 함수는 아니며, 확인하려는 환경에서 직접 실행해야 그 환경의 실제 값을 볼 수 있습니다.

PHP 파일을 만들고 실행하기

PHP가 설치되어 있고, 웹서버가 .php 파일을 PHP로 처리하도록 구성되어 있어야 합니다. 다음 내용을 phpinfo.php라는 파일로 저장합니다. 독립된 PHP 파일이므로 별도 HTML이나 닫는 PHP 태그는 필요하지 않습니다.

<?php
phpinfo(INFO_GENERAL | INFO_CONFIGURATION | INFO_MODULES);

이 예제는 일반 정보·설정·확장 모듈을 골라 출력합니다. 로컬 개발 환경에서 PHP 명령을 사용할 수 있다면 파일이 있는 폴더로 이동한 뒤 다음 명령으로 개발용 서버를 시작할 수 있습니다.

php -S 127.0.0.1:8000 -t .

브라우저에서 http://127.0.0.1:8000/phpinfo.php를 엽니다. PHP 정보 표가 나타나면 파일이 실행된 것입니다. 확인을 마치면 터미널에서 Ctrl+C로 서버를 중지합니다. 127.0.0.1은 해당 컴퓨터의 루프백 주소이며, PHP 내장 서버는 운영 서비스용 웹서버가 아닙니다. 사용 조건은 PHP 내장 웹서버 문서를 참고하세요.

기존 Apache·Nginx·PHP-FPM 환경을 점검하려면 그 환경의 문서 루트에 있는 확인용 파일로 접근해야 합니다. 별도로 띄운 내장 서버의 결과가 기존 웹사이트의 PHP 설정을 증명하지는 않습니다. 파일을 더블클릭해 file 주소로 여는 것은 PHP 실행 방법이 아닙니다.

정보 표에서 먼저 확인할 항목

항목 확인 목적
PHP Version 이 요청을 처리한 PHP 버전을 확인합니다. 명령줄의 버전과 다를 수 있습니다.
Server API 웹서버 모듈·FPM·명령줄 등 어떤 방식으로 실행 중인지 구분합니다.
Loaded Configuration File 실제로 읽은 주 설정 파일을 확인합니다. 다른 php.ini를 수정하는 실수를 줄일 수 있습니다.
추가 설정 파일 항목 별도 ini 디렉터리에서 읽은 설정이 있는지 확인합니다.
Local Value / Master Value 현재 실행 문맥의 값과 기본 설정값을 비교합니다. 차이가 있으면 추가 설정이나 실행 중 변경도 확인합니다.
확장 모듈별 구역 필요한 모듈이 해당 실행 환경에 로드되었는지 확인합니다.

예를 들어 mysqli가 설치되어 있어도 현재 웹 요청을 처리하는 PHP에 로드되지 않았다면 해당 환경에서 mysqli 함수를 사용할 수 없습니다. 다른 PHP 실행 파일이나 다른 설정 파일을 쓰는지 확인해야 합니다. 숫자나 경로는 설치 방식마다 달라지므로 예시 화면의 값과 똑같은지를 확인하는 것이 목적은 아닙니다.

php.ini를 수정했는데 값이 그대로라면 먼저 Loaded Configuration File과 추가로 읽은 설정 파일을 확인합니다. 그 뒤 해당 실행 방식에서 설정을 다시 읽는 시점을 확인하세요. 웹서버 모듈과 PHP-FPM 같은 프로세스는 설정 변경을 반영하려면 해당 프로세스의 재시작·다시 읽기가 필요할 수 있습니다. PHP 설정 파일의 읽기 규칙에 따라 판단해야 하며 웹페이지 새로고침만으로 항상 반영되지는 않습니다.

출력 범위를 flags로 선택하기

인수를 생략한 phpinfo()는 INFO_ALL을 사용합니다. 환경 변수와 요청·서버 변수까지 포함될 수 있으므로 필요한 구역만 선택하는 편이 확인할 항목을 줄이는 데 도움이 됩니다. 다만 일부 구역만 출력한다고 그 결과를 공개해도 안전해지는 것은 아닙니다.

<?php
// 기본 동작: 모든 정보 출력
phpinfo();
<?php
// 모듈 정보만 출력
phpinfo(INFO_MODULES);

처음 예제처럼 비트 OR 연산자 |로 상수를 조합할 수 있습니다. INFO_GENERAL은 일반 실행 정보, INFO_CONFIGURATION은 설정, INFO_MODULES는 확장 모듈 정보를 선택합니다. INFO_ENVIRONMENT·INFO_VARIABLES는 환경 변수와 요청 관련 정보를 다루므로 점검 범위를 정할 때 구분하세요. 전체 옵션은 PHP 공식 phpinfo() 문서에서 확인할 수 있습니다.

phpinfo()는 문자열을 반환하는 함수가 아니라 출력을 발생시키며 반환값은 true입니다. 따라서 echo phpinfo()처럼 쓰면 정보 뒤에 반환값이 문자 1로 덧붙을 수 있습니다. 정보를 표시하려는 목적이면 함수만 호출합니다. 설정값 하나가 필요할 때는 거대한 출력 페이지를 해석하기보다 ini_get() 같은 해당 기능의 함수를 사용하는 것이 분명합니다.

명령줄과 웹서버의 결과가 다른 이유

명령줄에서는 저장한 파일을 다음처럼 실행할 수 있습니다. 출력은 HTML 표가 아닌 텍스트이므로 브라우저 화면처럼 보이지 않는 것이 정상입니다.

php phpinfo.php

PHP 실행 파일 자체의 전체 정보·버전·설정 파일 위치·모듈 목록을 각각 확인하려면 다음 명령을 사용할 수 있습니다. 각 명령은 별도 진단 방법이며 모두 실행해야 하는 필수 순서는 아닙니다.

php -i
php -v
php --ini
php -m

명령줄 PHP와 웹서버 PHP는 실행 파일, 버전, 설정 파일, 로드한 확장이 다를 수 있습니다. 웹사이트에서 오류가 나면 웹 요청의 결과를 기준으로 비교해야 합니다. 실행 인터페이스는 php_sapi_name()이나 PHP_SAPI로 구분할 수 있고, 명령 옵션은 PHP 명령줄 옵션 문서에 정리되어 있습니다.

정보가 나오지 않을 때와 확인 후 정리

PHP 코드가 그대로 보이거나 다운로드된다면 서버가 그 요청을 PHP로 처리하지 못하는지 확인합니다. 단순히 확장자를 .php로 바꾸는 것만으로 웹서버의 PHP 연동이 완성되지는 않습니다. 404이면 문서 루트·파일 위치·요청 주소를, 빈 화면이나 500 오류이면 서버의 오류 로그와 실행 권한·구문을 확인하세요. 관리 환경에서 함수를 제한했다면 제한 정책도 확인해야 합니다.

phpinfo 결과에는 서버 경로·설정·환경 변수나 요청 데이터가 들어갈 수 있습니다. 운영 서버에 누구나 접근하는 진단 페이지를 계속 남기지 말고 필요한 관리 범위에서만 확인한 뒤 파일을 제거합니다. 공유할 때도 전체 화면이나 출력을 그대로 보내기보다 문제와 관련된 항목만 골라 비밀값과 내부 정보를 가립니다. 공개 접근을 차단하거나 파일을 지운 뒤 같은 주소에서 더 이상 진단 정보가 나오지 않는지도 확인하세요.