Changes

Jump to: navigation, search

PHP, Filesystems and File I/O

158 bytes added, 19:28, 7 June 2007
no edit summary
One of the benefits of PHP being a server side scripting environment is that it gives the web developer easy access to the filesystem of the server on which the web server is running. This gives us the ability to create, open, delete, read and write to files. We can also traverse the directory hierarchy of the server systems to do things like get directory listings and create new sub-directories(see [[Working with Directories in PHP]]).
In this chapter we will cover all aspects of interecting interacting with files and the filesystem in details.
== Opening and Creating Files in PHP ==
Existing files are opened, and new files created using the PHP ''fopen()'' function. The ''fopen()'' function accepts two arguments and returns a ''file handle'' which is subsequently used fo for all future read and write interactions with that file. The first argument is the name (including the path) of the file to open. This path is relative to the server filesystem root, not your web server root. The second argument is an attribute indicating the mode in whcih which you with to open the file (create, read only, write only etc). The following table lists the various file open attributes together with a broef brief description of each:
<table border="1" cellspacing="0" width="100%">
== Closing Files in PHP ==
Once a file has been opened it can be closed using the ''fclose()'' function. The ''fclose ()'' function takes a single argument; - the ''file handle'' returned by the ''fopen'' function when the file was first opened.
Given this information we can write a script to open a file. For the purposes of this example we will create a new file in the root /tmp direcotry of our web server. We will open the file in ''w+'' mode so that it will be created if it does not already exist and provide both read and write access. We will then close the file using ''fclose()'':
<pre>
== Writing to a File using PHP ==
Having created and opened the file the next task is to write data to the file. We can do this using the PHP ''fwrite()'' and ''fputs()'' functions. These are essentially tyhe the same function so either can be used.
''fwrite ()'' takes two arguments, the ''file handle'' returned form the orginal original ''fopen ()'' callm and he the string to be written. We can, therefore , extend our example to write a string to our file:
<pre>
== Reading From a File using PHP ==
Data can be read from a file using the PHP ''fread() '' function. ''fread ()'' accepts two arguments, the ''file handle'' and the number of bytes to be read from the file:
<pre>
<tt>data = This line of text was written by PHP done</tt><br>
It is also possible to read and output the contents of an enter entire file with the ''readfile()'' function. This function reads the entire contents of a file and outputs that content. Assumign Assuming you don't need to do anything but output the contents of a file then 'readfile()'' is an easy solution because it does all the work for you. You do not need to open the file, read the data, close the file and display the data. All you need to do is call ''readfile()'' passing in the file path as an argument and it does the rest.
== Checking Whether a File Exists ==
The ''file_exists'' fuinction can be used at any time to find if a file already exists in the file systemfilesystem. The function takes a single argument - the path to the file in question and returns a boolean ''true'' or ''false'' value depending on whether the existance of the file.
== Moving, Copying and Deleting Files with PHP ==
Files can be copied uysing using the ''copy()'' function, renamed using the ''rename()'' function and deleted using the ''unlink()'' function. For example we can perform a number tasks on our example file:
<pre>
PHP provides access to a wide range of file attributes such as when the file was created, whether the file is readable or writeable and the current file size.
The PHP ''stat()'' and ''fstat()'' functions provide a wealth of information about a file. The information is so copious that the results are returned as an associative array. The function functions take a single argument. ''stat()'' takes a string defining the path to the file. ''fstat()'' takes a file handle returned from an ''fopen()'' function call.
The following table outlines the array values returned by both functions:
</table>
With reference to the above table we can now extarct extract some information about a file on the file system of our server:
<pre>
== PHP Output Buffering ==
Output buffering in PHP is a mechanism whereby content thaty that would nornally normally be sent directly to the outpout output stream is initally initially held in a buffer until the buffer is flushed. This provides control over when output is presented to the user (perhaps in situations where there is a delay in gather gathering some data from a database for example).
Output Buffering is initaited using the ''ob_start()'' function. ''ob_start()'' can be called with no argumnhts arguments but does support three optional arguments:
* callback function - specifies a user defined function to be called before tyhe the buffer is flushed
* bytes - an integer representing the number of bytes to be buffered before the callback is triggered. Set to ''null'' to disable this feature

Navigation menu