0

私はここにあるFTPのものを処理するクラスを持っています:

/var/www/html/crm/rhinos/classes/ftp.php

このクラスは、次のスプレッドシートを生成するスクリプトに含まれています。

/var/www/html/crm/send_cust_lock.php

生成されたスプレッドシートは次の場所にあります。

/var/www/html/crm/tmp/cust_lock_1430424215.xlsx

私のクラスには次のメソッドが含まれています。

public function put($filepath){
    $fp = fopen($filepath, 'r');
    $z = ftp_fput($this->connection, $filepath, $fp, FTP_BINARY);
    fclose($fp);
    return $z;
}

私のsend_cust_lock.phpスクリプトから、 $ftp->put($fn);$fnスプレッドシートへの上記のファイルパスである)を呼び出すと、次のエラーが発生します。

Warning: ftp_fput(): Can't open that file: No such file or directory in /var/www/html/crm/rhinos/classes/ftp.php on line 62

fopen()エラーをスローしないのに、なぜエラーをスローするのftp_put()でしょうか?

ここで選択した回答の関数を使用して、パスを相対パスに変換しようとしましたが、うまくいきません。ファイルパスを認識できるものに変換するにはどうすればよいftp_put()ですか?

4

1 に答える 1

3

マニュアルによると、値は次のとおりです。

ftp_fput ( resource $ftp_stream , string $remote_file , resource $handle , int $mode [, int $startpos = 0 ] )

そして、あなたは合格しています:

$z = ftp_fput($this->connection, $filepath, $fp, FTP_BINARY);

あなた$fpは期待どおりローカルファイルへのハンドルですが、なぜ同じパスを渡すの$remote_fileですか? ローカル ファイル名を渡したので、リモート FTP では見つかりません。

于 2015-04-30T20:15:56.933 に答える