PHP: FTP and FTPS - Manual

downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

PHP input/output streams HTTP and HTTPS

Last updated: Sat, 27 Jan 2007

view this page in

# FTP and FTPS

PHP 3, PHP 4, PHP 5. `ftps://` since PHP 4.3.0

- `ftp://example.com/pub/file.txt`

- `ftp://user:password@example.com/pub/file.txt`

- `ftps://example.com/pub/file.txt`

- `ftps://user:password@example.com/pub/file.txt`

Allows read access to existing files and creation of new files via FTP. If the server does not support passive mode ftp, the connection will fail.

You can open files for either reading or writing, but not both simultaneously. If the remote file already exists on the ftp server and you attempt to open it for writing but have not specified the context option `overwrite`, the connection will fail. If you need to overwrite existing files over ftp, specify the `overwrite` option in the context and open the file for writing. Alternatively, you can use the FTP extension.

> Appending: As of PHP 5.0.0 files may be appended via the `ftp://` URL wrapper. In prior versions, attempting to append to a file via `ftp://` will result in failure.

`ftps://` was introduced in PHP 4.3.0. It is the same as `ftp://`, but attempts to negotiate a secure connection with the ftp server. If the server does not support SSL, then the connection falls back to regular unencrypted ftp.

> Замечание: FTPS is supported starting from PHP 4.3.0, if you have compiled in support for OpenSSL.

Таблица M-4. Wrapper Summary

Attribute | PHP 4 | PHP 5
--- | --- | ---
Restricted by allow_url_fopen | Yes | Yes
Allows Reading | Yes | Yes
Allows Writing | Yes (new files only) | Yes (new files/existing files with `overwrite`)
Allows Appending | No | Yes
Allows Simultaneous Reading and Writing | No | No
Supports stat() | No | As of PHP 5.0.0: filesize(), filetype(), file_exists(), is_file(), and is_dir() elements only. As of PHP 5.1.0: filemtime().
Supports unlink() | No | Yes
Supports rename() | No | Yes
Supports mkdir() | No | Yes
Supports rmdir() | No | Yes

Таблица M-5. Context options (as of PHP 5.0.0)

Name | Usage | Default
--- | --- | ---
`overwrite` | Allow overwriting of already existing files on remote server. Applies to write mode (uploading) only. | `FALSE` (Disabled)
`resume_pos` | File offset at which to begin transfer. Applies to read mode (downloading) only. | 0 (Beginning of File)
`proxy` (PHP 5.1.0 or greater) | Proxy FTP request via http proxy server. Applies to file read operations only. Ex: `tcp://squid.example.com:8000` |

> Underlying socket stream context options: Additional context options may be supported by the underlying transport For `ftp://` streams, refer to context options for the `tcp://` transport. For `ftps://` streams, refer to context options for the `ssl://` transport.

add a note User Contributed Notes
FTP and FTPS
wlangdon at essex dot ac dot uk
09-Oct-2006 09:32
`old fashioned FTP servers may not be compatible with ftp_connect().`
25-Sep-2005 08:33
`<?
$str ="replace all contenents";
$filew="ftp://gufo:gufo@192.168.1.55:21/jj.php";
$opts = array('ftp' => array('overwrite' => true));
$context = stream_context_create($opts);
$strwri = file_put_contents($filew,$str,LOCK_EX,$context);
?>`
php at f00n dot com
04-Jul-2004 12:39
`For Intranet purposes I found I preferred to move my file via ftp functions to match the session user's ftp account and put the file in a holding bay so I knew who it was from.
The FTP wrapper method will NOT do this if your ftp server does NOT support passive mode.
eg. an ftp server behind NAT/routing`
add a note
PHP input/output streams HTTP and HTTPS

Last updated: Sat, 27 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 09:32:46 2007 PST