PHP ftp server connection and file handling

In this article, you will learn how to connect to and handle files in FTP server using the PHP programming language.

Handling files on the server is a very common task for developers. There will be numerous circumstances when you really want to handle files from FTP server in PHP. There is a variety of file management software available. But without using these FTP clients such as FileZilla, CyberDuck, etc, we can do the file management on the server using a PHP script. PHP provides lots of in-built functions to handle FTP connections.





PHP FTP Functions

In this article, we are using the following PHP in-built FTP functions to manage files on the FTP server -

  • ftp_connect- Connect to FTP connection.
  • ftp_login- Login to FTP Server.
  • file_exists- Check existence of a file.
  • filemtime- Last file modification time.
  • ftp_mdtm- Unix timestamp of last file modification time.
  • fopen- Open the file.
  • ftp_fget- Download the file from the FTP server.
  • ftp_quit- Close an FTP connection.
  • fclose- Close an open file.




PHP FTP Connection and Login

First of all, we need to connect to the FTP server before any further operations can be done. In the given code, we have used the ftp_connect() method to connect to an FTP server. It connects to FTP server with an optional specified port and a timeout. It returns an FTP stream on success and false on failure. After a successful connection, we need to login to the server using the ftp_login() function and provide a connection object, username and password.

<?php
$host = 'hostname';
$user = 'ftp username';
$password = 'ftp password';
$remotefile = 'remotefilename';
$localfile = 'localfilename';
// Connect to host
$conn = ftp_connect($host);
if(!$conn) {
	echo 'Error: could not connect to ftp server';
	exit;
}

echo 'Connected to '.$host.'<br/>';

$result = ftp_login($conn, $user, $password);
if(!$result){
	echo "Error: could not log on as ".$user; 
	ftp_quit($conn);
	exit;
}
echo "logged in as ".$user; ?>




PHP Upload File to FTP Server

Once the connection and login established, we can perform file handling process. In the given code, we have uploaded a file to the FTP server using the ftp_put() function.

<?php
$host = 'hostname';
$user = 'ftp username';
$password = 'ftp password';
$remotefile = 'remotefilename';
$localfile = 'localfilename';
// Connect to host
$conn = ftp_connect($host);
if(!$conn) {
	echo 'Error: could not connect to ftp server';
	exit;
}

echo 'Connected to '.$host.'<br/>';

$result = ftp_login($conn, $user, $password);
if(!$result){
	echo "Error: could not log on as ".$user; 
	ftp_quit($conn);
	exit;
}

$localFile  = 'index.php';
$remoteFile = 'public_html/index.php';
 
// try to upload file
if(ftp_put($conn, $remoteFile, $localFile, FTP_ASCII)){
    echo "File transfer successful - $localFile";
}else{
    echo "There was an error while uploading $localFile";
}
 
// close the connection
ftp_close($conn);
?>




PHP Last File Uploaded Time on FTP Server

In this given example, we have checked the last uploaded file time on the FTP server.

<?php
$host = 'hostname';
$user = 'ftp username';
$password = 'ftp password';
$remotefile = 'remotefilename';
$localfile = 'localfilename';
// Connect to host
$conn = ftp_connect($host);
if(!$conn) {
	echo 'Error: could not connect to ftp server';
	exit;
}

echo 'Connected to '.$host.'<br/>';

$result = ftp_login($conn, $user, $password);
if(!$result){
	echo "Error: could not log on as ".$user; 
	ftp_quit($conn);
	exit;
}
echo "logged in as ".$user;

// Check file
echo "Checking file time";
$localtime = 0;
$remotetime = ftp_mdtm($conn, $remotefile);
if(!($remotetime >= 0)) {
	echo "Cann't accesss remote file time";
	$remotetime = $localtime + 1;
}
else {
	echo 'Remote file last updated';
	echo date('G:i j-M-Y', $remotetime);
	echo '<br/>';
}
?>




PHP Download File from FTP Server

In the given example, we have downloaded file from the server using the ftp_fget() method.

<?php
$host = 'hostname';
$user = 'ftp username';
$password = 'ftp password';
$remotefile = 'remotefilename';
$localfile = 'localfilename';
// Connect to host
$conn = ftp_connect($host);
if(!$conn) {
	echo 'Error: could not connect to ftp server';
	exit;
}

echo 'Connected to '.$host.'<br/>';

$result = ftp_login($conn, $user, $password);
if(!$result){
	echo "Error: could not log on as ".$user; 
	ftp_quit($conn);
	exit;
}
echo "logged in as ".$user;

echo 'Getting file from server';
$fp = fopen($localfile, 'w');
	
if(!$success = ftp_fget($conn, $fp, $remotefile, FTP_BINARY)){
	echo 'Could not download file';
	ftp_quit($conn);
	exit;
}
fclose($fp);
echo 'file downloaded successfully';
	
//close connection
ftp_quit($conn);
?>




Related Articles

File Upload Validation in PHP
PHP File Upload MIME Type Validation
How to lock a file using PHP
Insert image in database using PHP
PHP User Authentication by IP Address
PHP Create Word Document from HTML
Generate a PDF file using mPDF in PHP
PHP secure random password generator
PHP MYSQL Advanced Search Feature
How to display PDF file in PHP from database
How to read CSV file in PHP and store in MySQL
Create And Download Word Document in PHP
PHP SplFileObject Standard Library
Simple File Upload Script in PHP
Sending form data to an email using PHP
Recover forgot password using PHP and MySQL
Php file based authentication
Simple PHP File Cache
How to get current directory, filename and code line number in PHP




Read more articles


General Knowledge



Learn Popular Language