php
PHP - allow_url_fopen 함수
php.ini 에서 allow_url_fopen 을 On으로 활성화하면 HTTP 나 FTP 를 통해 파일을 작성하거나 읽어 올 수 있습니다. HTTP 인 경우 include, include_once, require, require_once 를 사용할 수 있고, FTP 는 fopen 으로 접속이 가능합니다.
FTP 접속은 "ftp://아이디:패스워드@도메인" 형식으로 접속이 가능하지만 동일한 파일이 이미 있을 경우 fopen() 함수를 호출하지 못합니다.
FTP 접속은 "ftp://아이디:패스워드@도메인" 형식으로 접속이 가능하지만 동일한 파일이 이미 있을 경우 fopen() 함수를 호출하지 못합니다.
<php
// (ex #1
if($file = @fopen("ftp://user_id:user_passwd@example.com/public_html/test.php", "w"))
{
// 여기에서 데이터를 씁니다.
fwrite($file, "원격 파일 쓰기<br />\n");
fclose($file);
} else {
echo "<p>원격 파일을 쓰도록 열 수 없습니다.\n";
exit;
}
// 결과: 원격 파일 쓰기<br />\n
// 이미 (ex #1 에서 test.php파일을 작성하였으므로 (ex #2 는 원격파일 작성에 실패합니다.
// (ex #2
if($file = @fopen("ftp://user_id:user_passwd@example.com/public_html/test.php", "w"))
{
// 여기에서 데이터를 씁니다.
fwrite ($file, "원격 파일 쓰기<br />\n");
fclose ($file);
} else {
echo "<p>원격 파일을 쓰도록 열 수 없습니다.\n";
exit;
}
/*
결과:
Warning: fopen(ftp://...@example.com/public_html/test.php)
[function.fopen]: failed to open stream: Remote file already exists
and overwrite context option not specified
<br /> FTP server reports 213 49 in C:\Server\public_html\test.php
on line 4
*/
?>
원격 접속시 동일 파일이 존재하면 덮어 쓰기는 안 되자만 데이터 추가는 가능합니다.
<?php
if($file = @fopen(ftp://user_id:user_passwd@example.com/public_html/test.php, "a"))
{
// 여기에서 데이터를 씁니다.
fwrite ($file, "원격 파일 쓰기<br />\n");
fclose ($file);
} else {
echo "<p>원격 파일을 쓰도록 열 수 없습니다.\n";
exit;
}
// 결과: 원격 파일 쓰기<br />\n원격 파일 쓰기<br />\n
?>
원격 접속시 읽어 오기도 가능합니다.
<?php
if($file = @fopen(ftp://user_id:user_passwd@example.com/public_html/test.php, "r"))
{
// 여기에서 데이터를 읽어 옵니다.
while(!feof($fp))
{
$file .= fread($fp,1024);
}
fclose ($fp);
} else {
echo "<p>원격 파일을 열 수 없습니다.\n";
exit;
}
echo $file;
// 결과: 원격 파일 쓰기<br />\n원격 파일 쓰기<br />\n
?>
간단하게 원격 파일 접속에 대해 설명하였지만 가능하면 allow_url_fopen 을 활성화하는 것을 권하지 않습니다.
0 댓글