Hi

I am trying to connect my server through PHP script as below. But i am unable to reach my server and getting error.

If i connect my server through ftp software with FTPES protocol my server is getting connect

I am getting an Error as

"Warning: ftp_connect() [function.ftp-connect]: php_network_getaddresses: getaddrinfo failed: No such host is known. in C:\xampp\htdocs\uploadftp.php on line 13
Cannot connect to host

Please can any one provide me good solution to solve my issue

<?php
// FTP access parameters
$host = 'ftp.servername.co';
$usr = 'user';
$pwd = 'pass';

// file to move:
$local_file = 'localpath/filename.pdf';
$ftp_path = $host.'/foldername/filename.pdf';
 
// connect to FTP server (port 21)
$conn_id = ftp_connect($host, 21) or die ("Cannot connect to host");
echo $conn_id;
// send access parameters
ftp_login($conn_id, $usr, $pwd) or die("Cannot login");
 
// turn on passive mode transfers (some servers need this)
ftp_pasv ($conn_id, true);
 
// perform file upload
$upload = ftp_put($conn_id, $ftp_path, $local_file, FTP_ASCII);
 
// check upload status:
print (!$upload) ? 'Cannot upload' : 'Upload complete';
print "\n";
 
/*
** Chmod the file (just as example)
*/
 
// If you are using PHP4 then you need to use this code:
// (because the "ftp_chmod" command is just available in PHP5+)
if (!function_exists('ftp_chmod')) {
   function ftp_chmod($ftp_stream, $mode, $filename){
        return ftp_site($ftp_stream, sprintf('CHMOD %o %s', $mode, $filename));
   }
}
 
// try to chmod the new file to 666 (writeable)
if (ftp_chmod($conn_id, 0666, $ftp_path) !== false) {
    print $ftp_path . " chmoded successfully to 666\n";
} else {
    print "could not chmod $file\n";
}
 
// close the FTP stream
ftp_close($conn_id);

?>

Dani AI

Generated

Good clues here: you can only connect with FTPES in FileZilla, and PHP throws "getaddrinfo failed: No such host is known." That usually means PHP cannot resolve the hostname you passed, or the value is not in the right format. Make sure you use the exact same host you use in FileZilla, but without any scheme prefix. For PHP’s FTP functions the hostname must not be prefixed with ftp:// (or ftpes://) and must not include slashes. See the parameter notes for ftp_connect. Also, your remote path should not include the host; use a server path like /foldername/filename.pdf, not $host.'/foldername/...'.

Because FileZilla works only when you choose FTPES (explicit TLS on port 21), switch your code to PHP’s SSL-FTP function and upload in binary mode (PDFs are binary):

$host = 'domainname.com';
$usr  = 'user';
$pwd  = 'pass';
$local = 'C:/path/filename.pdf';
$remote = '/foldername/filename.pdf';

$conn = ftp_ssl_connect($host, 21, 10) or die('Connect failed');  // FTPS
ftp_login($conn, $usr, $pwd) or die('Login failed');
ftp_pasv($conn, true);  // after login
ftp_put($conn, $remote, $local, FTP_BINARY) or die('Upload failed');
ftp_close($conn);

Notes:

  • FTPES/FTPS uses TLS. Use ftp_ssl_connect for a secure FTP session; the function requires OpenSSL support in your PHP build, especially on older Windows builds. Check with function_exists('ftp_ssl_connect'). See ftp_ssl_connect.
  • Call passive mode after a successful login. See ftp_pasv.
  • Use FTP_BINARY for PDFs and other non-text files. See ftp_put.

Agreeing with and : if it still fails, post the exact hostname you are using (no prefixes), whether ftp_ssl_connect exists in your PHP, and the server’s required TLS settings. That will narrow it down fast.

Recommended Answers

All 5 Replies

I advice you to have a deep look into your code or in the internet. This problem could be caused by anything. You could have a typing error, or try to connect to a computer without ftp-server, or your extension doesn't work or your firewall, router...

What about connecting to that computer via a ftp-client?

Hi

i have explained the thing in the above post itself.

If i connect my server through ftp software with FTPES protocol my server is getting connect

Hi rpv_sen,

I'm sorry to say, but in my point of view, you haven't.

Not getting access to a FTP-server does not necessary be a fault of PHP.

For some good advice, we actually need more details.
1) The correct server address
2) does it work with file-zilla
3) what about your firewall?
4) anything installed correctly
etc

As I said before, this problem can be caused by almost anything thinkable.

Greetings

We need more information to solve this issue.

commented: Words of wisdom +6

hi

Thanks for your reply,

I am able to connect my FTP through file-zilla, that to i have specify the protocol as below

ftpes://domainname.com

we don't have any firewall system.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.