Sayfalar

11 Kasım 2007 Pazar

Curl dosya işlemleri ve allow_url_fopen sorunu

Müşterilerime Script Yazarken En Çok Oluşan Sorunlar kullandıgım php fonksiyonlarının sunucuda yasaklanması bazende allow_url_fopen değerinin Off Olmasıdır

peki
allow_url_fopen değerinin off olması neyi engeller örnek verecek olursak

$kaynak=file_get_contents("http://wwww.oxxi.net/index.php");
echo $kaynak;

Gibi bir php kodcuğu çalıştırınca

URL file-access is disabled in the server configuration

Gibi bir hata verirdi

Bizde file_get_contents fonksiyonunun yaptığı işi curl kütüphanesinden
yararlanarak yapacağız

function kaynak($site){


$ch = curl_init();
$timeout = 0;
curl_setopt ($ch, CURLOPT_URL, $site);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$icerik = curl_exec($ch);
curl_close($ch);

return $icerik;

}
yukarıdaki Fonksiyonla istediğimiz sitenin kaynağını alıyoruz kullanımı

$kaynak=kaynak("http://wwww.oxxi.net/index.php");

echo $kaynak;

şeklinde
İkinci Fonksiyonumuz ise uzak sunucudaki herhangi bir dosyayı alıp istediğiniz
isimde kaydedebilmenize olanak sağlıyor

function dosya_cek($adres,$ad)
{
if (!extension_loaded(curl)) {
die("Extension yuklu degil socket deneyebilirsin");
}

$ch = curl_init("$adres");
if (!$ch) {
die("Curl oturumu baslatamadim..");
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
// baglantiyi kapa
$islem = fopen("$ad", "a+");
fwrite($islem, $data);
fclose($islem);
if ($islem) {
echo $ad." Dosya basariyla yuklendi...
";

} else {
echo $ad." Dosya yuklenemedi";
}
}

Örnek Kullanımı

dosya_cek("http://www.oxxi.net/index.html","index.html");

Kodcuğun Çalıştığı dizine http://www.oxxxi.net/index.html kaynak kodlarını
index.html olarak kaydediyoruz




Hiç yorum yok: