Bird
Raised Fist0
PHPprogramming~5 mins

Writing files (fwrite, file_put_contents) in PHP

Choose your learning style10 modes available
Introduction

Writing files lets your program save information on the computer. This helps keep data even after the program stops.

Saving user input like notes or settings to a file.
Creating a log file to record events or errors.
Storing data from a form submission for later use.
Generating reports or text files automatically.
Syntax
PHP
<?php
// Using fwrite
$file = fopen('filename.txt', 'w');
fwrite($file, 'Your text here');
fclose($file);

// Using file_put_contents
file_put_contents('filename.txt', 'Your text here');
?>

fwrite needs you to open and close the file manually.

file_put_contents is simpler and does all steps in one function.

Examples
This writes 'Hello World!' to example.txt using fopen and fwrite.
PHP
<?php
$file = fopen('example.txt', 'w');
fwrite($file, 'Hello World!');
fclose($file);
?>
This does the same as above but in one line with file_put_contents.
PHP
<?php
file_put_contents('example.txt', 'Hello World!');
?>
This writes two lines to the file using newline characters.
PHP
<?php
file_put_contents('example.txt', "Line 1\nLine 2\n");
?>
Sample Program

This program writes a greeting message to 'greeting.txt' using fwrite, then reads and prints it.

PHP
<?php
// Write a greeting to a file using fwrite
$filename = 'greeting.txt';
$file = fopen($filename, 'w');
fwrite($file, "Hello, friend!\nWelcome to PHP file writing.");
fclose($file);

// Read and print the file content
$content = file_get_contents($filename);
echo $content;
?>
OutputSuccess
Important Notes

Always close files opened with fopen using fclose to save changes properly.

file_put_contents will overwrite the file by default. Use FILE_APPEND flag to add instead.

Make sure your script has permission to write to the folder where the file is saved.

Summary

Use fwrite when you want more control opening and closing files.

Use file_put_contents for quick and simple file writing.

Writing files helps save data permanently outside your program.

Practice

(1/5)
1. Which PHP function is best for quickly writing a string to a file without manually opening or closing it?
easy
A. fclose
B. fwrite
C. fopen
D. file_put_contents

Solution

  1. Step 1: Understand the purpose of file_put_contents

    This function writes data to a file in one step, handling opening and closing automatically.
  2. Step 2: Compare with fwrite

    fwrite requires manual file opening and closing, so it's not as quick for simple writes.
  3. Final Answer:

    file_put_contents -> Option D
  4. Quick Check:

    Quick file write = file_put_contents [OK]
Hint: Use file_put_contents for quick file writes without fopen/fclose [OK]
Common Mistakes:
  • Confusing fwrite as a standalone write function
  • Thinking fopen writes data
  • Assuming fclose writes data
2. Which of the following is the correct syntax to write "Hello" to a file named "greet.txt" using fwrite?
easy
A. $file = fopen('greet.txt'); fwrite($file, 'Hello');
B. $file = fopen('greet.txt', 'w'); fwrite($file, 'Hello'); fclose($file);
C. file_put_contents('greet.txt', 'Hello');
D. fwrite('greet.txt', 'Hello');

Solution

  1. Step 1: Check the correct usage of fwrite

    fwrite requires a file handle from fopen opened in write mode.
  2. Step 2: Validate the full sequence

    $file = fopen('greet.txt', 'w'); fwrite($file, 'Hello'); fclose($file); opens the file in write mode, writes "Hello", then closes the file properly.
  3. Final Answer:

    $file = fopen('greet.txt', 'w'); fwrite($file, 'Hello'); fclose($file); -> Option B
  4. Quick Check:

    fopen + fwrite + fclose = correct syntax [OK]
Hint: Always fopen with 'w' before fwrite, then fclose [OK]
Common Mistakes:
  • Calling fwrite without fopen file handle
  • Missing file mode in fopen
  • Not closing the file after writing
3. What will be the output of this PHP code?
$filename = 'data.txt';
file_put_contents($filename, "Line1\n");
$file = fopen($filename, 'a');
fwrite($file, "Line2\n");
fclose($file);
echo file_get_contents($filename);
medium
A. Line2
B. Line1
C. Line1 Line2
D. Error: file not found

Solution

  1. Step 1: Analyze file_put_contents call

    This writes "Line1\n" to 'data.txt', creating or overwriting the file.
  2. Step 2: Analyze fopen with 'a' mode and fwrite

    Opening in append mode adds "Line2\n" after existing content.
  3. Step 3: Read file content with file_get_contents

    It returns both lines concatenated with newlines.
  4. Final Answer:

    Line1 Line2 -> Option C
  5. Quick Check:

    Append mode adds lines, so both lines appear [OK]
Hint: file_put_contents overwrites; fopen 'a' appends [OK]
Common Mistakes:
  • Assuming file_put_contents appends instead of overwrites
  • Forgetting 'a' mode appends
  • Expecting only last line output
4. Identify the error in this PHP code snippet that tries to write "Test" to "file.txt":
$file = fopen('file.txt', 'r');
fwrite($file, 'Test');
fclose($file);
medium
A. File opened in read mode, cannot write
B. Missing semicolon after fwrite
C. fclose called before fwrite
D. fopen filename missing extension

Solution

  1. Step 1: Check fopen mode

    The file is opened in 'r' (read) mode, which does not allow writing.
  2. Step 2: Understand fwrite requirements

    Writing requires 'w', 'a', or 'r+' mode; 'r' mode causes error on fwrite.
  3. Final Answer:

    File opened in read mode, cannot write -> Option A
  4. Quick Check:

    Write needs write mode, not 'r' [OK]
Hint: Open file with 'w' or 'a' to write, not 'r' [OK]
Common Mistakes:
  • Using 'r' mode when writing
  • Ignoring file mode errors
  • Assuming fwrite works on read-only handle
5. You want to save user input lines into a file, but only if the input is not empty or whitespace. Which PHP code snippet correctly writes non-empty trimmed lines to "input.txt" using fwrite?
hard
A. $file = fopen('input.txt', 'w'); foreach ($lines as $line) { if (trim($line) !== '') { fwrite($file, $line . "\n"); } } fclose($file);
B. $file = fopen('input.txt', 'w'); foreach ($lines as $line) { fwrite($file, $line . "\n"); } fclose($file);
C. file_put_contents('input.txt', implode("\n", $lines));
D. $file = fopen('input.txt', 'r'); foreach ($lines as $line) { if ($line) { fwrite($file, $line); } } fclose($file);

Solution

  1. Step 1: Check file open mode

    $file = fopen('input.txt', 'w'); foreach ($lines as $line) { if (trim($line) !== '') { fwrite($file, $line . "\n"); } } fclose($file); opens file in 'w' mode, allowing writing and overwriting.
  2. Step 2: Validate input filtering

    It uses trim($line) !== '' to skip empty or whitespace-only lines before writing.
  3. Step 3: Confirm writing and closing

    Writes each valid line with newline and closes file properly.
  4. Final Answer:

    Option A code snippet -> Option A
  5. Quick Check:

    Trim check + fwrite + 'w' mode = correct [OK]
Hint: Trim input lines and write only non-empty with fwrite [OK]
Common Mistakes:
  • Not trimming lines before writing
  • Opening file in 'r' mode when writing
  • Using file_put_contents without filtering
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard