FTP と FTPS

PHP 3、PHP 4、PHP 5。ftps:// は PHP 4.3.0 以降。

FTP 経由でのファイルの読み込みと新しいファイルの作成を許可します。 サーバがパッシブモードの FTP をサポートしていない場合、接続は失敗します。

読み込み用または書き込み用のどちらかでファイルをオープンすることが 可能ですが、それらを両方同時に指定することはできません。FTP サーバ上の 既存のファイルを書き込み用にオープンしようとした場合、もし コンテキストオプション overwrite が指定されていなければ 接続は失敗します。既存のファイルを FTP 越しに上書きしたい場合は、 コンテキストオプション overwrite を指定したうえで 書き込み用にファイルをオープンします。別の方法としては、 FTP 拡張モジュール を使用することも可能です。

追記: PHP 5.0.0 では、ftp:// URL ラッパー経由での ファイルの追記が可能となりました。それ以前のバージョンでは ftp:// 経由でのファイルの追記は失敗していました。

ftps:// は PHP 4.3.0 から有効になりました。 これは ftp:// と同じですが、FTP サーバとの 安全な接続を確立しようと試みます。もしサーバが SSL をサポートして いなければ、通常の(暗号化されない)FTP を使用します。

注意: FTPS のサポートは PHP 4.3.0 から始まりました。これを使用するには OpenSSL サポートを含めて PHP をコンパイルする必要があります。

表 O-4. ラッパーの概要

属性PHP 4PHP 5
allow_url_fopen で制約されるYesYes
読み込み許可YesYes
書き込み許可Yes(新規ファイルのみ)Yes(新規ファイル あるいは 既存のファイルで overwrite を指定)
追加許可NoYes
同時読み書き許可NoNo
stat() のサポートNo PHP 5.0.0 では filesize()filetype()file_exists()is_file() および is_dir() のみ。 PHP 5.1.0 で filemtime()
unlink() のサポートNoYes
rename() のサポートNoYes
mkdir() のサポートNoYes
rmdir() のサポートNoYes

表 O-5. コンテキストオプション(PHP 5.0.0 以降)

名前使用法デフォルト
overwrite リモートサーバ上の既存のファイルに対する上書きを許可する。 書き込みモード(アップロード)時のみ有効。 FALSE(無効)
resume_pos 転送を開始するファイル内の位置。 読み込みモード(ダウンロード)時のみ有効。 0(ファイルの先頭)
proxy(PHP 5.1.0 以降) FTP リクエストを、http プロキシサーバ経由で行う。 ファイルの読み込み操作にのみ適用される。 例: tcp://squid.example.com:8000  

基盤となるソケットストリームのコンテキストオプション: これ以外のコンテキストオプションが 基盤となるトランスポート でサポートされています。 ftp:// ストリームの場合は、tcp:// のコンテキストオプションを参照ください。 ftps:// ストリームの場合は、ssl:// のコンテキストオプションを参照ください。