Updated May 15, 2023
Definition
file_put_contents is a PHP function that writes a specified string of data to a file. If the concerned file does not exist, it gets created. Conversely, if the file exists, its contents will be overwritten by the specified data. The function is easy to implement and only requires the file name and data to be written as parameters. Additionally, it is possible to write data to a remote file by specifying a URL or modifying the function’s behavior using flags. file_put_contents is a valuable tool for a multitude of purposes, such as storing form data, generating log files, or debugging through the creation of written records.
Syntax and Parameters
The syntax and parameters of the file_put_contents function are crucial to its correct usage and behavior. The syntax defines the structure of the function and the required order of the parameters. The parameters themselves allow for the specification of the target file, the data to be written, and options to modify the behavior of the function. A clear understanding of the syntax and parameters of the file_put_contents function is important for accurate and effective usage of the function.
Syntax:
file_put_contents(filename, data, [flags, context]);
Parameters:
Parameter | Description |
$filename (Compulsory) | “$filename” is a parameter in the file_put_contents function that specifies the name and location of the file to which data is being written. The $filename parameter is required and specifies the target file to which the data will be written. |
$data (Compulsory) | $data is a variable that holds the content that will be written to a file using the file_put_contents() function in PHP. It can be a string, array, or any other PHP data type. The data will be converted to a string before it is written to the file. The data passed in the “$data” parameter is written to the file specified in “$filename”. |
$flags (optional) | $flags is an optional parameter for file_put_contents() in PHP that sets specific flags to control how the file write operation is performed. It can be used to modify the behavior of file_put_contents() function in terms of writing to a file. The $flags parameter takes one or more predefined constants as values that control the write mode. Some of the commonly used constants include:
FILE_USE_INCLUDE_PATH – This flag allows you to search for the file in the include_path. If the file is not found in the current directory, the included path is searched. FILE_APPEND – This flag opens the file in append mode, and writes data to the end of the file. If the file does not exist, it is created. LOCK_EX – This flag causes the file to be locked for exclusive write access. This means that no other processes can write to the file until it is unlocked. FILE_TEXT – This flag sets the file mode to text. This is used for text files, and line endings are converted to the system’s default. FILE_BINARY – This flag sets the file mode to binary. This is used for binary files, and line endings are not converted. The default value of the $flags parameter in the file_put_contents function is 0. |
$context (optional) | The context parameter in the file_put_contents function in PHP allows the user to specify a set of options that modify the behavior of the function when it writes data to a file or a remote server. The context is specified as an associative array that defines options for a stream, such as headers to be sent along with a request, timeout values, encryption method, etc. It allows the user to control the way data is sent and received through a stream in PHP. |
$mode (optional) | The $mode parameter is an optional parameter and is not typically used in the file_put_contents function. $mode is a parameter in the file_put_contents function in PHP that specifies the access mode when opening the file. The value of $mode determines what kind of access the function has to the file, such as read-only or write-only access. By default, file_put_contents opens the file with write-only access. This means that the function can only write data to the file and cannot read the existing data in the file. |
Examples
Here an array of data is converted to a JSON string and written to a remote URL using an HTTP POST request. The stream_context_create function is used to create a stream context resource that specifies the HTTP method, header information, and timeout for the request. The file_put_contents function is then used to send the JSON data to the specified URL using the specified context. The function then returns the number of bytes written to the file, or false if there is any error. The response is checked to determine if the data was sent successfully, and a message is displayed accordingly.
Example #1
Code:
<?php
$data = array("name" => "John Doe", "email" => "[email protected]", "phone" => "555-555-1212");
$json = json_encode($data);
$context = stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => "Content-Type: application/json\r\n".
"Accept: application/json\r\n".
"User-Agent: My PHP Script",
'content' => $json,
'timeout' => 60
)
));
$response = file_put_contents("https://www.example.com/api/create_user", $json, 0, $context);
if ($response === false) {
echo "Error: Could not send data to remote server.";
} else {
echo "Data successfully sent to remote server. Response: $response";
}
?>
Output:
The output in the above example would be a message indicating the success or failure of the data being sent to the remote server. If the data is sent successfully, the output would be:
If an error occurs, the output would be:
Example #2
Code:
<?php
$file = "https://cdn.educba.com/var/www/html/students.txt";
$data = "1, Alice, 23, History, 3.7\n2, Bob, 25, Mathematics, 3.9\n3, Charlie, 22, English, 3.5\n4, Dave, 24, Computer Science, 4.0\n";
// Writing data to the file
file_put_contents($file, $data);
// Check if the file was written successfully
if (file_exists($file)) {
echo "Data was successfully written to the file.";
} else {
echo "An error occurred while writing data to the file.";
}
?>
Output:
The output for the code would depend on the server’s response to the request. If the request was successful, the output would be:
If the request was unsuccessful, the output would be:
Conclusion
file_put_contents is a useful PHP function for writing data to a file. It has several parameters that allow you to control the behavior of the function, such as the file path, data to be written, and the mode in which the file is opened. With the help of the optional stream context, file_put_contents can even write data to remote servers. This function is a simple and efficient way to write data to a file, making it a popular choice among PHP developers.
Recommended Article
In this article, you learned about file_put_contents in PHP. To know more about the topic, you can refer to these articles.