2

FTP サーバーが正しく機能していることを確認するために可能な限りすべての接続を行い、file_put_contents() を使用してファイルをアップロードすることもできますが、SSL 接続を試みると PHP の FTP 機能が機能しません。サーバーは SSL 以外の接続を許可しないように構成されているため、フォールバックはありません。大丈夫です。すべてまだ動作しますが、本当に ftp_ssl_connect() と ftp_login() を使用して動作させたいのです!

次の例を参照してください。

<?php

$username    = 'someuser';
$password    = 'SeCrEtPassWd';
$hostname    = '192.168.1.10';
$filename      = 'whatever.txt';
$string_data  = 'This is the text content of the file. Pretty fancy eh?';


// USE file_put_contents W/ stream_context_create - WORKS !!!!
$url = 'ftps://' . $username . ':' . $password . '@' . $hostname . '/';
$opts = array('ftp' => array('overwrite' => true));
$context = stream_context_create( $opts );
file_put_contents( $url . $filename, $string_data, 0, $context );

// 動作するコードの終わり -----------------------------------

// USE PHP's FTP functions - DOES NOT WORK !!!
$conn_id = @ftp_ssl_connect( $hostname );
$login_result = ftp_login( $conn_id, $username, $password );
ftp_put( $conn_id, $filename, $filename, FTP_ASCII );
ftp_close( $conn_id );

// 動作しないコードの終わり ---------------------------

/*
****ERRORS PERTAINING TO THE PROBLEM ----------------------------****

Warning: ftp_login() [function.ftp-login]: SSL/TLS handshake failed in C:\xampp\htdocs\script-library\ftps.php on line 20
Warning: ftp_login() [function.ftp-login]: Proceed with negotiation. in C:\xampp\htdocs\script-library\ftps.php on line 20
*/

これはPHPのバグですか?他のすべてが機能する理由がわかりませんが、PHP FTP機能は機能しません。私の問題は、リモートサーバー上のファイルを上書きしたくないので、ファイルをリストできるようにする必要があることです。ファイルの名前を存在しない名前に変更したいと思います。

4

2 に答える 2

2

それを行うためにphpseclibを使用できます。私にとっては完全に機能します: http://phpseclib.sourceforge.net/

于 2012-06-06T12:47:02.817 に答える
0

必要だった:

ftp_pasv($conn_id, true);

ログイン後、私の仕事をするために。

于 2012-09-20T01:31:23.097 に答える