fopen

(PHP 4, PHP 5, PHP 7, PHP 8)

fopenBir dosya veya URL'yi açar

Açıklama

fopen(
    string$dosyaismi,
    string$kip,
    bool$include_path_kullan = false,
    ?resource$bağlam = null
): resource|false

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

Bağımsız Değişkenler

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. 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_agentphp.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:\\dizin\\kaynak.txt", "r");
?>
kip

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

fopen() işlevinin kip bağımsız değişkeninde belirtilebilecek kip çeşitleri
KipAçı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çılması dışında 'w' gibidir.
'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. fseek() işlevi bu kipte etkisiz olup daima dosyanın sonuna yazar.
'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. fseek() işlevi bu kipte etkisiz olup daima dosyanın sonuna yazar.
'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; aksi takdirde 'x' verilmiş gibi davranır. eşdeğerdir.
'c' Dosya yalnızca yazmak için açılır. Dosya yoksa oluşturulur. Varsa, ne kesilir ('w' bağımsız değişkenininin aksine), ne de bu işleve yapılan çağrı başarısız olur ('x' durumunda olduğu gibi). Dosya konumlayıcı dosyanın başlangıcına yerleştirilir. Dosyayı değiştirmeye çalışmadan önce bir tavsiye kilidi (flock() bölümüne bakın) isteniyorsa bu yararlı olabilir, 'w' kullanımındaki gibi kilitlenmeden önce dosyayı kesebilir (kesme istenirse, kilit talep edildikten sonra ftruncate() kullanılabilir). requested).
'c+' Dosya hem okumak hem de yazmak için açılır; aksi takdirde, 'c' bağımsız değişkenindeki gibi davranır.
'e' Açık dosya konumlayıcıya close-on-exec bayrağını uygular. Sadece PHP, POSIX.1-2008 uyumlu sistemler üzerinde derlenmişse kullanılabilir.

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 (Mac OS Classic) \r karakterini kullanır.

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 bağımsız değişkeninde daima son karakter olarak belirtin.

Öntanımlı dönüşüm kipi 'b''dir. Salt metin dosyalarla çalışıyorsanız ve betiğinizde satır sonu karakteri olarak \n kullanıyorsanız, fakat dosyalarınızın notepad'in eski sürümleri 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 't' seçeneğini belirseniz, verinizle ilgili tuhaf sorunlarla karşılaşabilirsiniz (örneğin, bozuk görüntü dosyaları ve \r\n karakterlerine bağlı tuhaf sorunlar).

Bilginize:

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.

Bilginize: php://output, php://input, php://stdin, php://stdout, php://stderr ve php://fd akım sarmalayıcıları için kip yok sayılır.

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ü bağımsız değişkenle '1' veya true değerini aktarmalısınız.

bağlam

Akım bağlamı özkaynağı.

Dönen Değerler

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

Hatalar/İstisnalar

Başarısızlık durumunda bir E_WARNING çıktılanır.

Sürüm Bilgisi

Sürüm: Açıklama
7.0.16, 7.1.2'e' seçeneği 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:password@example.com/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ı kullanılarak açılırsa 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:

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.

Bilginize:

dosyaismi bir dizin olduğunda da bu işlev başarılı olabilir. dosyaismi'nin bir dosya mı yoksa bir dizin mi olduğundan emin olamıyorsanız fopen() işlevini çağırmadan önce is_dir() kullanmanız gerekebilir.

Ayrıca Bakınız

To Top