4

このコードは奇妙な動作をしています。私がやろうとしているのは、FTPS 接続を介してファイルを削除し、それが機能したかどうかを判断することだけです。削除は完全に行われていますが、副作用が発生しています。理由はわかりませんが、結果のディレクトリの内容がエコーする原因となっています。

$conn = curl_init();
$testfile = 'file.txt';

curl_setopt($conn, CURLOPT_PORT, $config['imt']['ftp']['port']);
curl_setopt($conn, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($conn, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($conn, CURLOPT_FTP_SSL, CURLFTPSSL_TRY);

$url = 'ftps://' . $config['imt']['ftp']['host'];

curl_setopt($conn, CURLOPT_URL, $url);
curl_setopt($conn, CURLOPT_USERPWD, $config['imt']['ftp']['username'] . ':' . $config['imt']['ftp']['password']);
curl_setopt($conn, CURLOPT_QUOTE, array('DELE /' . $testfile));

$result = curl_exec($conn);

if ($result)
{
    echo 'Success';
}

curl_close($conn);

上記はまさにこれを出力します。

drwxrwxrwx   1 DCG AbilityFTPServer          0 Jan 09 12:58 .
drwxrwxrwx   1 DCG AbilityFTPServer          0 Jan 09 12:58 ..
-rw-rw-rw-   1 DCG AbilityFTPServer        260 Jan 08 12:52 Congratulations.txt
Success

削除しようとしていたファイルは実際に削除されており、その txt ファイルだけがディレクトリに残っています。「Success」も表示されます。しかし、なぜ私はそれを求めていないのにディレクトリの内容を印刷しているのでしょうか!?

4

1 に答える 1

4

関数がデータを出力する代わりにデータを返すようにしてcurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);ください。curl_exec()

于 2013-01-09T18:16:39.507 に答える