세이박스

'php.ini'에 해당되는 글 2건

  1. file_get_contents() Warning 오류 해결 방법
  2. php upload 용량 늘리기

file_get_contents() Warning 오류 해결 방법

웹프로그램
웹호스팅을 이용할 경우 php.ini 수정이 어려운 경우가 있습니다.
특히 외부의 파일을 가져올 경우 allow_url_fopen = 0; 일 경우 1로 수정 해줘야 하지만, 보안상 막아둔 경우 서버를 공용으로 사용하므로 수정을 해주지 않습니다.
저의 경우 cafe24 호스팅을 주로 이용하는데 이곳 역시 allow_url_fopen = 0 으로 되어 있어서 fopen(), file(), file_get_contents() 함수로 외부 URL 을 읽어 들이기가 안됩니다.
 
Warning: file_get_contents() URL file-access is disabled in the server configuration in
 
하지만, 오류를 해결하는 방법으로 외부 파일을 읽어 들이는 함수 이용전에 다음과 같이 ini 설정을 임시로 변경해서 사용하면 됩니다.
 
@ini_set("allow_url_fopen","1");
 
ini_set() 를 사용해서 해당 페이지에서 일시적으로 allow_url_fopen을 1로 적용해서 이용할 수 있습니다.
 
하지만, allow_url_fopen 이용시 보안상 취약합니다.
아래 cafe24 호스팅 업체로 부터 답변 받은 내용 입니다.
 
최근 발생하고 있는 홈페이지 변조나, 피싱 사이트로의 악용은 대부분 게시판의 취약점이나, php 의 취약점에 의해 발생되고 있습니다. 이중에 가장 빈번한 것이 php 의 외부 사이트 소스 실행 기능 (allow_url_fopen)으로 악의적인 프로그램이 실행되어져서 발생이 되고 있습니다.
이러한 문제로 인하여 한국정보보호진흥원에서는 allow_url_fopen 을 허용하지 않기를 권고 하고 있습니다.
allow_url_fopen 을 허용하게 되면 보안적으로 심각한 문제를 초래 할 수 있습니다.
해당 기능을 켜두게 되면, 원격에서 프로그램을 웹사이트에 삽입하여 실행(PHP injection), 대량으로 웹사이트를 변조 할 수 있게 되므로 어느날 갑자기, 홈페이지 화일이 통채로 지워지거나, 데이터베이스 내용이 모두 사라질수도 있습니다.
 
관련 내용 URL :
 
저희 카페24에서는 기본적으로 해당 기능이 모두 off 로 설정이 되어 있으며, 따라서 고객님께서는 가급적 allow_url_fopen 기능이외에 다른 방법으로 구현을 하시거나, 아래의 예시와 같은 function 을 만들어서 사용하시는 것을 권고합니다. (HttpRequest, http_get, fsockopen 등의 함수로 구현이 가능합니다.)
(allow_url_fopen 기능이란 php 에서 include 를 사용할때 URL 방식으로 파일을 include 할수 있도록 해주는 기능입니다.)
 
(해당 내용이 이해가 되지 않거나, 보안의 위험성을 감수하더라도 반드시 allow_url_fopen 을 사용하셔야 한다면, 고객센터로 연락을 주시면 친절히 상담해 드립니다.)
 
-----------------------------------------------------------------------------------------
function get_url_fsockopen( $url ) {
     $URL_parsed = parse_url($url);
     $host = $URL_parsed["host"];
     $port = $URL_parsed["port"];
     if ($port==0)
          $port = 80;
     $path = $URL_parsed["path"];
     if ($URL_parsed["query"] != "")
          $path .= "?".$URL_parsed["query"];
     $out = "GET $path HTTP/1.0\\r\\nHost: $host\\r\\n\\r\\n";
     $fp = fsockopen($host, $port, $errno, $errstr, 30);
     if (!$fp) {
          echo "$errstr ($errno)<br>\\n";
     } else {
          fputs($fp, $out);
          $body = false;
          while (!feof($fp)) {
          $s = fgets($fp, 128);
          if ( $body )
               $in .= $s;
          if ( $s == "\\r\\n" )
               $body = true;
          }
          fclose($fp);
          echo $in;
     }
}
-----------------------------------------------------------------------------------------
 
위 함수로도 동작 잘 되는군요.
 
 

php upload 용량 늘리기

웹프로그램
업로드시 용량 제한으로 인해 업로드 되지 않는 경우가 있습니다.
php.ini 파일을 수정해주시면 되는데
기본 설정이 보통 2MB 로 되어 있습니다.
php.ini 파일의 설치 경로에 따라 다를 수 있지만 대부분
기본 경로는 /usr/local/php/lib/php.ini 에 보통 설치 합니다.
해당 파일에서 아래 위치 부분들을 수정 해주시면 됩니다.

파일 업로드 적용 여부
file_uploads = On

파일 업로드 최고 용량 지정 MB
upload_max_filesize = 20M

POST상에 전송되는 용량 지정 upload_max_filesize와 동일하게 맡혀 주시면 됩니다.
post_max_size = 20M

파일이 업로드 되는데 걸리는 시간 최대값, 300초면 5분정도이며 무한정 세션을 열어 주면 서버 부하가 많이 걸려 시간을 제한을 둡니다. 인터넷 느린 사용자를 감안해서 조금 넉넉하게 잡아 주시면 됩니다.
예로 20MB 제한을 할경우 20MB 파일을 올려보세요!
max_execution_time = 300

업로드 동안 사용할 메모리? 용량 지정해줍니다.
memory_limit = 20M

수정후 아파치 재시작 하시면 됩니다.