본문 바로가기

웹개발/PHP

[해결방법 총정리] Warning: URL file-access is disabled in the server configuration in

Warning: require_once() [function.require-once]: URL file-access is disabled in the server configuration in ...

Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in ...

Warning: getimagesize() [function.getimagesize.php]: URL file-access is disabled in the server configuration in ...

PHP(워드프레스)에서 files_get_contents, fopen, include 등을 사용할 때 절대 경로가 포함된 파일의 주소를 코드 내에서 사용하려고 하면 위와 같은 애러 메세지를 볼 수 있습니다.

일반적인 PHP 코드에서의 해결 방법 4가지와 워드프레스에서의 해결 방법을 소개합니다.


방법 1. php.ini 파일에 설정 추가

 allow_url_fopen = ON

 단점 : 보안상 문제가 생길 수 있으며, 서버 설정을 바꿀 수 없는 경우 적용 불가능


방법 2.  .htaccess 에 아래의 코드 삽입

 php_flag allow_url_fopen = ON

 단점 : 보안상 문제가 생길 수 있음


방법 3. php 스크립트에 아래의 코드 삽입

 ini_set('allow_url_fopen', 'On');


방법 4. fopen 대신 curl 사용

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, ‘http://www.example.com/mew.php’);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$contents = curl_exec($ch);

curl_close($ch); 


위의 방법은 일반적으로 php에서 files_get_contents, fopen등의 함수 사용시 발생할 수 있는 경우에 대한 해결책입니다.  

이 애러가 워드프레스에서 발생하는 경우는 아주 간단한 방법으로 해결하실 수 있습니다.

보안 위험을 높이면서 서버 설정을 바꾸실 필요 없습니다.

워드프레스에서 include_once, require_once 시에 애러가 발생하는 경우에 대한 해결 방법!

Warning: require_once() [function.require-once]: URL file-access is disabled in the server configuration in ...

Fatal error: require_once() [function.require]: Failed opening ... 

이런 애러는 아래와 같은 상황에서 발생하죠..

require_once ( plugins_url('', __FILE__ ) . "yourcode.php" 


 plugins_url('', __FILE__ ) 은 전체 url을 반환하기 때문에, allow_url_fopen이 설정되어 있지 않으면 아래와 같은 이 코드 대신 

 require_once ( plugin_dir_path( __FILE__ ) . "yourcode.php"; 

를 사용하시면 해결됩니다.