[PHP-users 5866] Re: PHPでのFTP 転送。

harikawa php-users@php.gr.jp
Mon, 04 Mar 2002 18:29:57 +0900


針川@茅ヶ崎です。
いつも参考にさせていただいてます。

> PHPのFTP関数を使用してサーバにFTPできるようにプログラムを作成していまが、
> ファイルをアップロードするときに
>   「error opening 指定したファイルパス」
> というエラーが表示されてしまって、アップロードができません。

snip

>        // ファイルをアップロードする
>        $destination_file = "test.gif";
>        $upload = ftp_put($conn_id, "$destination_file", "$gazou",
> FTP_BINARY);
>        if ( ! $upload ){
>             //#######ここでエラーが発生#################
>             $ERROR = "転送に失敗しました。\n";
>        }
>     }

PHP の FTP 転送は PASSIVE モードでないと使えません。
(コマンドはうまくいっても put, get, nlist で失敗します)
あと、PASSIVE でも権限とポートの関係で失敗することがあるようです。
私の場合は一部、フィルタに引っかかってうまくいかず、フィルタの変更はし
たくないので、この部分だけ popen で直接 ftp を呼んでます。
ただ、以下のコードは FreeBSD4.4 付属の ftp ですから、他のではうまくい
かないかもしれません。

$cmd =
"ftp://".$ftp_user_name.":".$ftp_user_pass."@".$ftp_server."/".$ftp_dir."/";
$pp = popen( $cmd, "w" );
if( $pp )
{
	$cmd = 'put '.$gazou.' '.$destination_file."\n";
	fputs( $pp, $cmd );
	fputs( $pp, "quit\n" );
	pclose( $pp );
}
else	$this->res = $php_errormsg.':送信に失敗しました';

だめだったらごめんなさい。

(((((((((   Soft-inn  針川英智  )))))))))
))))      http://www.softinn.to/     (((( 
(((         harikawa@softinn.to       )))
))))    Tel:0467-59-1003 Fax:1002    ((((
((((_______ 茅ヶ崎市共恵1-15-1 ______))))