12 - File handling in PHP

Web server can access only files located under root document, on the other side PHP can access a file from any location in the file system if the file permissions are set accurately or include_path is set correctly.

In a file manipulation process following tasks can be included:

· Open file for read and write

· Close file

· Perform operations on file

· Write results

With PHP we can handle files easily. There are various in built functions available for file handling in PHP.

Using file handling we can open, create, upload and edit files. 

In PHP before working with file, we must open the file first using fopen() function

fopen() function is used in the following manner to perform this task:

<?php 
  $fp=fopen(<filename to be opened with path>, <the mode in which file is to be opened>);
?> 

In the above code, we have used two parameters while using fopen() function:

· Filename to be opened

· Mode in which file is to be opened.

The function will return a file pointer if the file is successfully opened, otherwise it will return false (zero).

Modes we can use in file handling:

Mode

Description

r

Read only mode, file pointer will set at the starting position of file.

r+

Read and write mode, file pointer will set at the starting of file.

w

Write mode only, if the file exists it will open otherwise a new file will be created. If the file already exists, earlier contents will be overwritten

w+

Write and read mode, if file exists contents will be overwritten otherwise a new file will be created.

a

Append file, if file exists it will open and file pointer will set at the ending of file, if it doesn’t exists a new file will be created.

a+

Read and append mode, if file exists the pointer will set at the end of file, otherwise a new file will be created.

x

It is used to create and open a file only for writing purpose, if file exists this mode will return false and display an error. If file doesn’t exists it will simply create a file

x+

 

 

There are four types of file connections can be made in PHP:

· HTTP

· FTP

· Standard I/O

· Filesystem

File read

For reading purpose of a file in PHP fread() function can be used. This function takes a file pointer and a file size in bytes as parameters. If the file size is not clear, we can use filesize() function as parameter, like:

<?php 
$fstring= fread($fd, filesize($filename)); 
?>

File Write

In PHP file writing process can be done with fwrite() function, which takes two parameters first file pointer and a string, with an optional length in bytes. The syntax of fwrite() function is:

$fout=fwrite($fp,$fstring); 
if($fout!=strlen($fstring)) 
{
     echo “file write failed!”; 
}

File close

File close can be done using fclose(). The syntax of file close is:

fclose($fd);

fclose() function does not require assignment in any variable.

feof

This function is used to check for end-of-file on a file pointer and takes a filename as argument. It is basically used in loop to perform the same function on each line in a file.

while(!feof($fd)) 
{
     $line=fgets($fd,4096);
     echo $line; 
}

file_exists

This function simply checks for the availability of file on local file system with the specified name.

 

if(!file_exists(“Myfile.php”)) 
{
     $fd=fopen(“Myfile.php”,”w+”); 
}

Function will simply return true if the file exists, otherwise false will be returned.

PHP file upload

 The main use of PHP file handling is to upload files on web server. We can perform this task using HTML form.

For the same we have to create HTML form like:

<html>
 <head>
   <title> Script to upload your file on web server</title>
 </head>
 <body>
   <h3> This page is created to upload file on web sever</h3><br/><br/>
   <form enctype="multipart/form-data" action="uploadfile.php" method="POST">
     Choose a file you want to upload on server:<br/><br/> <input name="file_upload" type="file"/><br/>
     <input type="hidden" name="file__size_upload" value="10000"/><br/><br/>
     <input type="submit" value="Upload File"/>
   </form>
 </body> 
</html>

 

Description of above form contents

· enctype: is the attribute that will define that the file to be uploaded is being uploaded using HTML form.

· action: This attribute is used to define the reference of PHP file, that is responsible to handle code for uploading PHP file.

· method:This attribute is used to define the way to transferring mode of contents to the PHP file. It can be GET and POST.

· input type: Using this attribute we can define the maximum size of file in bytes, that can be uploaded.

· input name: This attribute is used to define the name of uploaded file.

 

Output of HTML file is:

 

PHP code to handle the uploading process

In the above HTML code we have defined file uploadfile.php to handle in action attribute. File will be uploaded in a temporary folder on web server. PHP uses $_FILES array to store all the information about files.

For file uploading process, we first need to understand the $_FILES array

Uploadedfile: The reference of file that we want to upload.

$_FILES[‘file_upload’][‘name’]

$_FILES[‘file_upload’][‘temp_file_name’]

Code of uploadfile.php

<?php
   $target = "upload/";
  $target = $target . basename( $_FILES['file_upload']['name']) ;
 $ok=1;     
//To check the file size condition
  if($uploaded_size > 350000)
 { 
      echo "Your file is too large.<br>";  $ok=0;
 }
 //To check the file type condition
 if ($uploaded_type =="text/php")
 {
   echo "No PHP files<br>";
    $ok=0; 
}
   //To check that $ok was not set to 0 by an error
   if ($ok==0) 
{
       Echo "Sorry your file was not uploaded";
}
  //If everything is ok file will be uploaded
 else
  {
      if(move_uploaded_file($_FILES['file_upload']
['tmp_name'], $target))
     {
           echo "The file ". basename( $_FILES['file_upload']['name']). " has been uploaded";
       }
     else
      { 
          echo "Sorry, there was a problem uploading your file.";
     }
  }
 ?>

Output of above code is:

 

Writing text file using PHP

We can write in text file using PHP. For the same firstly file should be opened in write mode.

 

<html>
 <head> 
    <title> Writing text file using PHP script </title>
 </head>
 <body> 
  <?php
     $fp=fopen("Myfile.txt","w+") or die("Unable to open file for write operation");
     $str="We are working in PHP script. This scripting language is simple and flexible to implement.";
     fwrite($fp,$str);
     fclose($fp);
     $fp=fopen("Myfile.txt","r") or die ("Unable to open file for read operation");
     echo fread($fp,filesize("story.txt"));
     fclose($fp);
  ?> 
 </body> 
</html>

 

The output of above code is

 

Reading a text file using PHP

A text file can be easily used to store data. But these types of files are not so much flexible as databases.

Text file can consume less amount of memory.

To perform a read operation in text file, first of all we should open file in read mode. Then we can read file in line by line manner or it can be completely read. 

 

Example:

<html>
 <head>  
   <title> Reading text file using PHP script </title>
  </head>
 <body>
 <?php
     $fp=fopen("story.txt","r") or die("Unable to open file for read operation");
     while(!feof($fp))
     { 
        echo fread($fp,filesize("story.txt"));
     }
     fclose($fp);
 ?>
 </body> 
</html>

 

The output of above code is:

 

Where story.txt if a text file.

Like us on Facebook