Як записати файл у PHP?


108

У мене цей скрипт на одному безкоштовному сервері, що підтримує PHP:

<html>
<body>

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


fclose($file);
?>

</body>
</html>

Він створює файл lidn.txt, але він порожній.

Як я можу створити файл і щось у нього записати, наприклад рядок "Коти переслідують мишей"?

Відповіді:


153

Ви можете використовувати функцію вищого рівня, наприклад:

file_put_contents($filename, $content);

що ідентично виклику fopen(), fwrite()та fclose()послідовного запису даних у файл.

Документи: file_put_contents


3
Просто сторона, file_put_contents()працює лише в PHP5. У цьому випадку це не здається проблемою (зрештою, ваша відповідь отримала акцепт), але там все ще може бути кілька хостів, на яких працює PHP4.x.
Дурот

2
Дуже важливий сторонній знак: file_put_contents () - кошмар пам'яті порівняно з fopen (). Я люблю його використовувати, але при обробці великих файлів ви хочете мати можливість передавати в них дані. Для PHP буде потрібно велика множина кінцевого розміру файлів як внутрішня пам'ять, тому майте це на увазі при використанні цієї функції. Для меншої кількості даних я б рекомендував його для простого використання.
Джон

1
Потім використовуйте file_put_contents ($ filename, $ other_stream). Це те саме, що використовувати stream_copy_to_stream-), що дуже ефективно працює з пам'яттю.
Савагеман

@Duroth він працює тільки в PHP5 або він працює тільки з PHP5? це дві різні речі.
Xsmael

2
@Xsmael Не в далекому минулому 2009 року;) PHP7 тоді ще не було. Але так, put_file_contents()вперше був представлений у PHP5, і з цього часу він був включений у більш пізні версії.
Дурот

88

Розглянемо fwrite () :

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

Ви можете використовувати вищевказаний код, також ви можете використовувати file_put_contents для детальної інформації про те, як читати та писати файл, який ви можете посилатися на techflirt.com/file-handling-in-php
Ankur Kumar Singh

@sathish після написання у файл, як вище, як ми читаємо файл, не закриваючи файл ( fclose($fp) ), я намагався $fp = fopen('lidn.txt', 'w+');, $fp = fopen('lidn.txt', 'a+');але жоден з них не працював
Kasun Siyambalapitiya


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

Ти використовуєш fwrite()


після написання у файл, як описано вище, як ми читаємо файл, не закриваючи файл ( fclose($fh)), я спробував $fh = fopen('lidn.txt', 'w+');: `$ fh = fopen ('lidn.txt', 'a +'); `але жоден з них не працював
Kasun Siyambalapitiya


6

Я використовую наступний код для запису файлів у свій веб-каталог.

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);
}
?>

Це робочий сценарій. не забудьте змінити URL-адресу у формі форми та цільовий файл у функції fopen (), якщо ви хочете використовувати його на своєму сайті.

Удачі.


1
Я щойно почав писати php, але це виглядає так, що ви не просто пишете текстовий файл, але ви записуєте файл php-коду на свій сервер, який потім можна буде запустити відразу після посилання на URL-адресу "demo.php". Хтось може записати шкідливий PHP-код на ваш сервер і негайно виконати його, правда? Я припускаю, що це так, щоб ви могли протестувати власні коди, але людей слід попередити про ризики цієї конкретної реалізації. (Це, як сказано, мені це подобається, і ми самі це зробимо)
RufusVS

6

Для того, щоб записати у файл, PHPвам потрібно пройти наступні кроки:

  1. Відкрийте файл

  2. Запишіть у файл

  3. Закрийте файл

    $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

Ось такі кроки:

  1. Відкрийте файл
  2. Запишіть у файл
  3. Закрийте файл

    $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()швидше є smidgen і все-таки file_put_contents()є просто обгорткою навколо цих трьох методів, так що ви втратите накладні витрати. Стаття

file_put_contents (файл, дані, режим, контекст):

file_put_contentsЗаписує рядок в файл.

Ця функція дотримується цих правил під час доступу до файлу. Якщо встановлено FILE_USE_INCLUDE_PATH, перевірте шлях включення для копії імені файлу. Створіть файл, якщо його не існує, тоді відкрийте файл і заблокуйте файл, якщо встановлено LOCK_EX і якщо встановлено FILE_APPEND, перейти до кінця файлу. В іншому випадку очистіть вміст файлу Запишіть дані у файл та закрийте файл та звільніть усі замки. Ця функція повертає число символу, записаного у файл при успіху, або FALSE при відмові.

fwrite (файл, рядок, довжина):

Запис fwriteу відкритий файл. Функція зупиняється в кінці файлу або коли він досягне вказаної довжини, залежно від того, що відбудеться першим. Ця функція повертає кількість помилок, записаних або FALSE, після відмови.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.