PHP'de bir dosyaya nasıl yazılır?


108

Bu komut dosyasını ücretsiz bir PHP destekli sunucuda kullanıyorum:

<html>
<body>

<?php
$file = fopen("lidn.txt","a");


fclose($file);
?>

</body>
</html>

Dosyayı oluşturur lidn.txt, ancak boş.

Nasıl bir dosya oluşturup içine bir şeyler yazabilirim, örneğin "Kediler fareleri kovalar" satırı?

Yanıtlar:


153

Aşağıdakiler gibi daha yüksek seviyeli bir işlevi kullanabilirsiniz:

file_put_contents($filename, $content);

çağrı özdeş olan fopen(), fwrite()ve fclose()bir dosyaya ardışık yazma veri.

Dokümanlar: file_put_contents


3
Sadece bir yan not, file_put_contents()yalnızca PHP5'te çalışır. Bu durumda bir sorun gibi görünmüyor (cevabınız sonuçta kabul edildi), ancak hala PHP4.x çalıştıran birkaç ana bilgisayar olabilir.
Duroth

2
Çok önemli bir yan not: file_put_contents (), fopen () ile karşılaştırıldığında bir bellek kabusu. Kullanmayı seviyorum, ancak büyük dosyaları işlerken içine veri "akışını" sağlayabilmek istiyorsunuz. PHP, dahili bellek olarak büyük bir son dosya katsayısına ihtiyaç duyacaktır, bu nedenle bu işlevi kullanırken bunu aklınızda bulundurun. Daha küçük miktarlarda veri için, kolay kullanımı için tavsiye ederim.
John

1
Daha sonra file_put_contents ($ dosyaadı, $ diğer_akım) kullanın. Bu bellek açısından oldukça verimli olan stream_copy_to_stream-) kullanmakla aynıdır.
Savageman

@Duroth sadece PHP5'te mi çalışıyor yoksa sadece PHP5'te mi çalışıyor? bunlar 2 farklı şey.
Xsmael

2
@Xsmael 2009'un uzak geçmişinde değil;) PHP7 o zamanlar ortalıkta yoktu. Ama evet, put_file_contents()ilk olarak PHP5'te tanıtıldı ve o zamandan beri sonraki sürümlerde de dahil edildi.
Duroth

88

Fwrite () düşünün :

<?php
$fp = fopen('lidn.txt', 'w');
fwrite($fp, 'Cats chase mice');
fclose($fp);
?>

Yukarıdaki kodu da kullanabilirsiniz file_put_contents dosyasını nasıl okuyup yazacağınızla ilgili ayrıntılar için kullanabilirsiniz techflirt.com/file-handling-in-php
Ankur Kumar Singh

@sathish biz dosyası (kapatmadan dosyayı okumak nasıl yukarıdaki gibi dosyaya yazdıktan sonra fclose($fp) ), beraber çalıştık $fp = fopen('lidn.txt', 'w+');, $fp = fopen('lidn.txt', 'a+');ama ikisi de çalıştı
Kasun Siyambalapitiya


10
$text = "Cats chase mice";
$filename = "somefile.txt";
$fh = fopen($filename, "a");
fwrite($fh, $text);
fclose($fh);

Kullan fwrite()


Yukarıdaki gibi dosyaya yazdıktan sonra dosyayı kapatmadan dosyayı nasıl okuruz ( fclose($fh)) $fh = fopen('lidn.txt', 'w+');, `$ fh = fopen ('lidn.txt', 'a +'); `` ama ikisi de işe yaramadı
Kasun Siyambalapitiya


6

Web dizinime dosya yazmak için aşağıdaki kodu kullanıyorum.

write_file.html

<form action="file.php"method="post">
<textarea name="code">Code goes here</textarea>
<input type="submit"value="submit">
</form>

write_file.php

<?php
// strip slashes before putting the form data into target file
$cd = stripslashes($_POST['code']);

// Show the msg, if the code string is empty
if (empty($cd))
    echo "Nothing to write";

// if the code string is not empty then open the target file and put form data in it
else
{
    $file = fopen("demo.php", "w");
    echo fwrite($file, $cd);

    // show a success msg 
    echo "data successfully entered";
    fclose($file);
}
?>

Bu çalışan bir komut dosyasıdır. URL'yi değiştirdiğinizden emin olunSitenizde kullanmak istiyorsanız form eyleminde ve fopen () işlevindeki hedef dosyayı .

İyi şanslar.


1
Php yazmaya yeni başladım ama bu sadece bir metin dosyası yazmıyorsunuz, aynı zamanda sunucunuza bir php kodu dosyası yazıyorsunuz gibi görünüyor, bu dosya daha sonra "demo.php" URL'sine başvurarak çalıştırılabilir. Birisi sunucunuza kötü amaçlı PHP kodu yazabilir ve hemen çalıştırabilir, değil mi? Bunun kendi kodlarınızı test edebilmeniz için olduğunu varsayıyorum, ancak insanlar bu özel uygulamanın riskleri konusunda uyarılmalıdır. (Olduğu söyleniyor, bunu beğendim ve kendim
yapalım

6

Bir dosyaya yazmak için PHPaşağıdaki adımları izlemeniz gerekir:

  1. Dosyayı aç

  2. Dosyaya yaz

  3. Dosyayı kapat

    $select = "data what we trying to store in a file";
    $file = fopen("/var/www/htdocs/folder/test.txt", "a");
    fwrite($file  , $select->__toString());
         fclose($file );

6

İşte adımlar:

  1. Dosyayı aç
  2. Dosyaya yaz
  3. Dosyayı kapat

    $select = "data what we trying to store in a file";
    $file = fopen("/var/www/htdocs/folder/test.txt", "w");        
    fwrite($file, $select->__toString());
    fclose($file);

5

fwrite()bir smidgen daha hızlıdır ve file_put_contents()bu üç yöntemin etrafındaki bir sarmalayıcıdır, bu yüzden ek yükü kaybedersiniz. makale

file_put_contents (dosya, veri, mod, bağlam):

file_put_contentsBir dosyaya bir dize yazar.

Bu işlev, bir dosyaya erişirken bu kuralları izler. FILE_USE_INCLUDE_PATH ayarlanmışsa, dosya adının bir kopyası için dahil etme yolunu kontrol edin Dosyayı oluşturun, ardından dosyayı açın ve LOCK_EX ayarlanmışsa ve FILE_APPEND ayarlanmışsa dosyayı kilitleyin, dosyanın sonuna gitme. Aksi takdirde, dosya içeriğini temizleyin Verileri dosyaya yazın ve dosyayı kapatın ve kilitleri serbest bırakın. Bu işlev, başarı durumunda dosyaya yazılan karakterin numarasını veya başarısızlık durumunda YANLIŞ'ı döndürür.

fwrite (dosya, dize, uzunluk):

fwriteAçık bir file.The işlevine yazma dosyanın sonunda kesilir ya da hangisi belirtilen uzunluğa ulaştığında first.This döndürür başarısızlık üzerine yazılmış bayt veya yanlış sayısını çalışır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.