php.ini

Programming/PHP 2015. 3. 13. 00:01

/어딘가에 있는/php.ini
php 설정파일이다. phpinfo() 함수로 php 설정 내용을 확인할 수 있다.
설정을 바꿔보겠다고 php.ini 파일에서 직접 수정을 하다가는 여러 프로젝트에 모두 적용이 되서 낭패를 보는 일은 없어야 한다.
딱히 낭패볼 일도 없긴 하지만...
php.ini 파일을 직접 수정한다면 웹서버를 다시 실행시켜 변경된 적용한다.

 

프로젝트마다 php 설정을 달리해야 한다면 php 파일 안에서 변경이 필요한 부분들만 ini_set() 함수로 설정해 주면 되겠다.
공통적으로 불러오는 common 같은 파일 안에 넣으면 모든 페이지를 호출할 때 ini_set 부분이 적용될 것이다.
하지만 모든 부분이 ini_set() 함수로 변경되지는 않는다.

 

 

php.ini 지시어 목록 : http://php.net/manual/en/ini.list.php

 

 

모든 지시어에 설정되어 있는 Changeable 모드에 따라 각각 변경 방법이 다르다.

  • PHP_INI_USER - ini_set() 으로 설정 가능. PHP 5.3 부터 .user.ini 에서 설정 가능.
  • PHP_INI_PERDIR - php.ini, .htaccess, httpd.conf, .user.ini 에서 설정 가능.
  • PHP_INI_SYSTEM - php.ini, httpd.conf 파일에서 설정 가능.
  • PHP_INI_ALL - 어디서든 설정 가능.

 

 

이러하니. ini_set() 으로 설정을 변경할 수 있는 모드는 PHP_INI_USER 와 PHP_INI_ALL 밖에 없다.
변경하고 싶은 지시어가 있다면 모드를 잘 확인하고 변경하면 되겠다.

 

주의할 지시어는 error_reporting 이나 display_errors.
php.ini 가 어떻게 설정되어 있든 ini_set() 을 이용하여 변경하고 에러 상태를 확인하려 할 때,
동일한 페이지에서 일부러 에러를 내버리면 해당 페이지의 파싱이 제대로 되지 않아 처리가 되지 않는다.
에러 수준 테스트를 하려면 아래처럼 해당 페이지를 호출하는 방법이 있다.

 

ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
include './test.php';

 

경로를 GET 으로 넘겨받아 해도 되고...

 

 

디렉토리 별로 설정을 가능하게 하려면 .htaccess 를 사용하는 방법도 있다.

 

  • php_value name value
    PHP_INI_ALL / PHP_INI_PERDIR 모드의 지시어만 가능. value=none 가능.
  • php_flag name on|off
    PHP_INI_ALL / PHP_INI_PERDIR 모드의 지시어만 가능.(Boolean)
  • php_admin_value name value
    .htaccess 파일에서 사용불가. 설정된 값은 .htaccess 나 ini_set 으로 적용 불가.
  • php_admin_flag name on|off
    .htaccess 파일에서 사용불가. 설정된 값은 .htaccess 나 ini_set 으로 적용 불가.(Boolean)

 

 

$ vi .htaccess
php_flag display_errors on

 

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,