2016-05-08 17 views
0

FTPコードを使用してFTPサーバーに接続すると、FTPサーバーに接続できません。最も恥ずかしいことは、ftp_connect()メソッドでサーバを接続しようとすると、私は偽になります。エラーは報告されません。これは私がPHPでFTPを使って作業しているとき初めてのことです。以前にそれに取り組んだことがある人なら、ここで私を助けることができます。私のコードは次のとおりです:FTPとPHPを使用してサーバーを接続できません

/* Source File Name and Path */  
$remote_file = $_SERVER['DOCUMENT_ROOT'] ."/some-folder/file.txt"; 

/* New file name and path for this file */ 
$ftp_host = 'ftp://targetserver.com/some folder/'; 
$ftp_user_name = 'user'; 
$ftp_user_pass = 'XXXXX'; 

/* New file name and path for this file */ 
$local_file = 'ftp://targetserver.com/some-folder/file.txt'; 

/* Connect using basic FTP */ 
$connect_it = ftp_connect($ftp_host, 21); 
var_dump($connect_it); 

/* Login to FTP */ 
$login_result = ftp_login($connect_it, $ftp_user_name, $ftp_user_pass); 

/* Download $remote_file and save to $local_file */ 
if (ftp_get($connect_it, $local_file, $remote_file, FTP_BINARY)) { 
    echo "Successfully written to $local_file\n"; 
} 
else { 
    echo "There was a problem\n"; 
} 

/* Close the connection */ 
ftp_close($connect_it); 
+0

エラーメッセージが表示されますか?もしそうなら、それを掲示してください。その他、あなたはユーザーの権利をチェックしましたか?スクリプトを実行しているユーザーに書き込み権限を与えていない可能性があります。 – Michael

+0

@Michael、いいえFTPに関するエラーメッセージは表示されません。私は私のエラーログをダブルチェックしました。ユーザーの権利は、十分な許可を得ても問題ありません。 –

答えて

2

は実際にあなたのFTPクライアントを使用すると、PHPのデバッグに飛び込む前に行うことが最善を試してみることです

$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server"); 

何らかの理由でサーバーに接続できませんでした虚偽の手段を取得しますhttps://filezilla-project.org/のような別のftpクライアントを取り出し、問題があなたのPHPスクリプトから来ていないので、すべてがうまく動作するかどうかを確認してください。

UPDATE 1

そして、これを試してみてください。

$ftp_host = 'targetserver.com'; 

http://php.net/manual/en/function.ftp-connect.php#refsect1-function.ftp-connect-parameters

The FTP server address. This parameter shouldn't have any trailing slashes and shouldn't be prefixed with ftp://. 

をそしてLOCAL_FILEためとREMOTE_FILEとして、彼らはパスではなくURLのでなければならない http://php.net/manual/en/function.ftp-get.php#refsect1-function.ftp-get-examples

+0

私はすでにスクリプトを書く前にこれを試しました。サーバーはFileZillaと接続して正常に動作しています。 –

+0

ありがとう@smarber、このソリューションは完璧に機能しました。しかし、私たちがFTPへのルートアクセス権を持っておらず、それだけにアクセスできるのであれば、どうすればよいでしょうか? 'targetserver.com/some-folder/'のようなフォルダの1つですか?お知らせ下さい。 –

+0

絶対パスを使用する – smarber

0

ftp_connect関数はエラーを生成しないため、拡張機能がインストールされているものとします。 これは、ポート21がブロックされているファイアウォールの問題である可能性が非常に高いです。 (これは非常に一般的な理由です)

+0

Ok Denis、意味があります。私は私のサーバーまたは反対のサーバーでこのポートをチェックすべきか、または両方のサーバーポートが開いているはずですか? –

+0

FTPサーバー自体について。あなたのデスクトップからのfilezillaのようなFTPクライアントを使って接続することができれば、この側では何もしません。 PHPコードがあるサーバーについては、ポート21を使用できることを確認する必要がありますが、FTPプロトコルがファイル転送に複数のポートを使用するため、ポート21は十分ではありません。どのようなウェブサーバーを使用していますか?今はどこでホストされていますか? –

+0

私のコメントは次のとおりです。あなたがFTPサーバーを手にしている場合、Webサーバー上で開くポートの数を制限したい場合は、特定の数のポートまたは範囲を使用するようにFTPサーバーを構成できます(FTPサーバーへの接続のみ、ポート21が使用されます) –

関連する問題