fopen

(PHP 4, PHP 5, PHP 7)

fopenBir dosya veya URL'yi açar

Açıklama

fopen ( string $dosyaismi , string $kip [, bool $include_path_kullan = false [, resource $bağlam ]] ) : resource

fopen() işlevi dosyaismi ile belirtilen özkaynak için bir akım açar.

Değiştirgeler

dosyaismi

Eğer dosyaismi "şema://...", biçeminde belirtilmişse bir URL belirtildiği varsayılır ve PHP bu şema için bir protokol eylemcisi (başka bir deyişle bir sarmalayıcı) bulmaya çalışır. Eğer bu protokol için kayıtlı bir sarmalayıcı yoksa PHP, sorunun giderilmesine yardımcı olmanız için bir uyarı verip belirtilen dosya ismini sıradan bir dosya gibi ele alarak işleme devam eder.

Eğer PHP dosyaismi ile belirtilen dosyanın bir yerel dosya olduğuna karar verirse bu dosya üzerinde bir akım açmaya çalışır. Dosya PHP için erişilebilir olmalıdır, yani dosyanın bu erişim için yeterli izinlere sahip olduğundan emin olmanız gerekir. safe_mode, veya open_basedir yönergesi etkinse bunlarla ilgili kısıtlamalar uygulanabilir.

Eğer PHP dosyaismi ile belirtilen dosyanın bir URL olduğuna ve bununla ilgili kayıtlı bir protokol olduğuna karar verirse ve bu protokol bir ağ protokolü olarak kaydedilmişse PHP allow_url_fopen yönergesinin etkin olup olmadığına bakar. Eğer yönergeye 'Off' değeri atanmışsa PHP bir uyarı verip işlevin başarısız olmasını sağlar.

Bilginize:

Desteklenen protokolleri Desteklenen Protokoller ve Sarmalayıcılar bölümünde bulabilirsiniz. Bazı protokoller (sarmalayıcılar) bağlam ve/veya php.ini seçeneklerini destekler. Kullanılabilecek seçeneklerin neler olduğunu öğrenmek için protokolle ilgili sayfaya bakınız (örneğin, http sarmalayıcısı user_agent php.ini yönergesini kullanır).

Windows platformunda dosya yolunu belirtmekte kullanılan tersbölü çizgilerini öncelemeyi unutmayın. Daha da iyisi dosya yolunu belirtmek için bölü çizgilerini kullanın. Örnek:

<?php
$dt 
fopen("c:\\veri\\bilgi.txt""r");
?>

kip

kip değiştirgesinde akım için gerekli erişim türü belirtilir. Şunlardan biri olabilir:

fopen() işlevinin kip değiştirgesinde belirtilebilecek kip çeşitleri
Kip Açıklama
'r' Akım sadece okumak için açılır; dosya konumlayıcı dosyanın başlangıcına yerleştirilir.
'r+' Akım hem okumak hem de yazmak için açılır; dosya konumlayıcı dosyanın başlangıcına yerleştirilir.
'w' Akım sadece yazmak için açılır; dosya konumlayıcı dosyanın başlangıcına yerleştirilir ve dosya uzunluğu sıfır yapılır. Dosya mevcut değilse oluşturulmaya çalışılır.
'w+' Akım hem okumak hem de yazmak için açılır; dosya konumlayıcı dosyanın başlangıcına yerleştirilir ve dosya uzunluğu sıfır yapılır. Dosya mevcut değilse oluşturulmaya çalışılır.
'a' Akım sadece yazmak için açılır; dosya konumlayıcı dosyanın sonuna yerleştirilir. Dosya mevcut değilse oluşturulmaya çalışılır.
'a+' Akım hem okumak hem de yazmak için açılır; dosya konumlayıcı dosyanın sonuna yerleştirilir. Dosya mevcut değilse oluşturulmaya çalışılır.
'x' Dosya oluşturulur ve sadece yazmak için açılır; dosya konumlayıcı dosyanın başlangıcına yerleştirilir. Dosya zaten mevcutsa fopen() FALSE döndürürek başarısız olur ve E_WARNING seviyesinde bir hata üretir. Dosya mevcut değilse oluşturulmaya çalışılır. Bu işlem, open(2) sistem çağrısı için O_EXCL|O_CREAT seçeneklerini belirtmeye eşdeğerdir.
'x+' Dosya oluşturulur ve hem okumak hem de yazmak için açılır; dosya konumlayıcı dosyanın başlangıcına yerleştirilir. Dosya zaten mevcutsa fopen() FALSE döndürürek başarısız olur ve E_WARNING seviyesinde bir hata üretir. Dosya mevcut değilse oluşturulmaya çalışılır. Bu işlem, open(2) sistem çağrısı için O_EXCL|O_CREAT seçeneklerini belirtmeye eşdeğerdir.

Bilginize:

Her işletim sistemi ailesinin farklı satır sonlandırma kuralları vardır. Bir metin dosyasını yazarken işletim sisteminizin gerektirdiği satır sonlandırma karakterlerini kullanmanız gerekir. Unix ve türevleri satırları sonlandırmak için \n, Windows ailesi \r\n, Mac'ler ise \r karakterini kullanırlar.

Dosyalarınızı yazarken yanlış satır sonlandırma karakterleri kullanırsanız, dosyayı başka uygulamalarda açtığınızda tuhaf görünebilir.

Windows'un \n karakterlerini şeffaf olarak \r\n karakterlerine dönüştürmesini sağlayan bir metin kipi dönüşüm seçeneği ('t') vardır. Eğer satır sonlandırma karakterlerinin değişmeden kalmasını istiyorsanız ikil kipi devreye sokan 'b' seçeneğini kullanabilirsiniz. Bu seçenekleri ('b' veya 't') kip değiştirgesinde daima son karakter olarak belirtin.

Öntanımlı dönüşüm kipi kullandığınız PHP sürümüne ve SAPI'ye bağlıdır. Bu bakımdan uyumluluk için daima uygun seçeneği belirtmelisiniz. Salt metin dosyalarla çalışıyorsanız ve betiğinizde satır sonu karakteri olarak \n kullanıyorsanız, fakat dosyalarınızın notepad gibi uygulamalarla da okunabilmesini istiyorsanız 't' kipini kullanmanız, diğer tüm durumlarda ise 'b' kipini kullanmanız gerekir.

İkil dosyalarla çalışırken 'b' seçeneğini belirtmezseniz, verinizle ilgili tuhaf sorunlarla karşılaşabilirsiniz (örneğin, bozuk resim dosyaları ve \r\n karakterlerine bağlı tuhaf sorunlar).

Bilginize:

Uyumluluk adına, dosyaları fopen() ile açarken daima 'b' seçeneğini kullanmanızı hararetle tavsiye ederiz.

Bilginize:

Tekrar, uyumluluk adına, dosyanızı 't' seçeneğinin kullanılmasını gerektirmeyecek satır sonlandırma karakterleri ile yazmanızı ve dosyayı açarken daima 'b' seçeneğini kullanmanızı hararetle tavsiye ederiz.

include_path_kullan

Açacağınız dosyanın aranacağı yollara include_path yönergesinde belirtilen yolları da dahil etmek isterseniz, isteğe bağlı olan bu üçüncü değiştirgeyle '1' veya TRUE değerini aktarmalısınız.

bağlam

Bilginize: Bağlamsal destek PHP 5.0.0 ile eklenmiştir. Bağlamlar hakkında bilgi edinmek için Akım İşlevleri belgesine bakınız.

Dönen Değerler

Başarı durumunda bir dosya tanıtıcısı aksi takdirde FALSE döner.

Hatalar/İstisnalar

Dosya başarıyla açılamazsa E_WARNING seviyesinde bir hata üretilir. Bu uyarının çıktılanmaması için işlev isminin başına @ karakterini ekleyebilirsiniz.

Sürüm Bilgisi

Sürüm: Açıklama
4.3.2 PHP 4.3.2'den beri, ikil ve metin ayrımı yapan tüm platformlar için ikil kip öntanımlıdır. PHP sürümünüzü yükselttikten sonra sorunlarla karşılaşırsanız, betiğinizi taşınabilir duruma getirene kadar sorundan kurtulmak için 't' seçeneğini kullanmayı deneyebilirsiniz.
4.3.2 'x' ve 'x+' seçenekleri eklendi.

Örnekler

Örnek 1 - fopen() örnekleri

<?php
$dt 
fopen("/home/rasmus/file.txt""r");
$dt fopen("/home/rasmus/file.gif""wb");
$dt fopen("http://www.example.com/""r");
$dt fopen("ftp://user:[email protected]/somefile.txt""w");
?>

Notlar

Uyarı

Microsoft IIS, SSL kullanırken bir close_notify göndermeden bağlantıyı kapatarak protokolle çelişir. Verinin sonuna ulaştığınız zaman PHP bunu "SSL: Fatal Protocol Error" (SSL: "Ölümcül Protokol Hatası") olarak raporlar. Bu sorunu bertaraf etmek için error_reporting değerini uyarıları içermeyecek bir seviyeye indirmek gerekir. PHP, akımı https:// şemasını kullanarak açarsanız hatalı IIS sunucu yazılımını saptayıp uyarıları engelleyebilir. Bir ssl:// soketi oluşturmak için fsockopen() kullanılacaksa uyarıları saptayıp engellemekten geliştirici sorumludur.

Bilginize: Güvenli kip etkinken, PHP, betiğin çalıştığı dizinin sahibinin betiği çalıştıran kullanıcı ile aynı olup olmadığını sınar.

PHP'nin sunucu modülü sürümünü kullanıyorsanız ve dosyaları okumak ve yazmak ile ilgili sorunlar bakımından deneyimliyseniz, sunucu sürecinin bu dosya ve dizinlere erişim izninin olması gerektiğini aklınızdan çıkarmamalısınız.

Ayrıca Bakınız