1

ファイル内のデータを使用してデータベーステーブルを更新できるように、あるサーバーから私のサーバーに ftp 経由で zip ファイルを転送しようとしています。ここに私のftp.phpファイルがあります:

    <?php
header('Content-type: text/html; charset=utf-8');
$date = "2013-05-21-11-19-40";
$ftp_server="ftp.server.com";
$ftp_user_name="BookCellar";
$ftp_user_pass="*****";
$file = "/reports/other/compreport_abebooks_" .$date. ".zip";//tobe uploaded
$remote_file = "/chroot/home/bookcellaronline.com/html/testbcos/accounting/compreport_abebooks_" .$date. ".zip"; 

?>

私のftpUpload.phpファイルは次のとおりです。

    <?php
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.filesize($file));
header('Content-Type: application/zip');
require_once('ftp.php');

// set up basic connection
$conn_id = ftp_ssl_connect($ftp_server);//ftp_connect

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($conn_id, true);
// check connection
if ((! $conn_id ) || (! $login_result )) {
echo "FTP connection has failed!" ;
exit;

} else {
echo "Connected for user $ftp_user_name" ;
}

ftp_chdir($conn_id, '/home/bookcell/bookcellaronline.com/html/testbcos/accounting/');

// upload a file
if (ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) {
echo "successfully uploaded $file\n";
exit;
} else {
echo "There was a problem while uploading $file\n";
exit;
}
echo $php_errormsg;
// close the connection
ftp_close($conn_id);
?>

これらを実行すると、次のエラー メッセージが表示されます。

    [<a href='function.ftp-put'>function.ftp-put</a>]: failed to open stream: No such file or directory in /chroot/home/bookcell/bookcellaronline.com/html/testbcos/accounting/ftpUpload.php on line 25

25 行目は次のとおりです。

    if (ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) {

SOに関する他の投稿をたくさん調査しましたが、解決策が見つかりませんでした。接続は機能していますが、転送するファイルを取得できません。どうすれば(可能であれば)これをサーバーに転送できますか?

編集:彼らのサーバー($file)だけでなく、私のサーバー($remote_file)にも接続する必要があるという事実を見逃していますか????

4

3 に答える 3

2

宛先ファイルへのパスを指定することはできません

$remote_file = "/chroot/home/bookcellaronline.com/html/testbcos/accounting/compreport_abebooks_" .$date. ".zip";

例 - これは機能しません

ftp_put($conn, '/www/site/file.html','c:/wamp/www/site/file.html',FTP_BINARY);

あなたが入れなければならない

<?php
ftp_chdir($conn, '/www/site/');
ftp_put($conn,'file.html', 'c:/wamp/www/site/file.html', FTP_BINARY ); 

FTP サーバーは彼の絶対パスを隠します/home/bookcell/bookcellaronline.com/html/

すべてのフォルダーは、root

ftp_chdir($conn_id, '/testbcos/accounting/');

ftp_chdir の結果をテストしてください! あなたは正しいディレクトリにいますか?

echo ftp_pwd($conn_id);

ブラウザ経由で FTP サーバーに接続してみてください。

ftp://BookCellar@ftp.server.com

あなたが得るものは/ですroot。ブラウザに表示されるフォルダとファイルは、rootディレクトリの下にあります。

更新:箱から出してすぐに使える例。

この行はDownload pass$password =に置き換える必要があります

ftp.php

<?php
    $password = "????";
    $resource = ftp_connect('ftp.strato.com');
    $login = ftp_login($resource, 'ftp_mx_all@moskito-x.de', $password);
    $list = ftp_rawlist($resource, '/');
    print_r($list);
?>

print_r で取得します

Array ( [0] => drwxr-xr-x 2 ftp ftp 4096 May 23 20:15 aFolder [1] => -rw-r--r-- 1 ftp ftp 167 May 23 20:25 tutorial.txt )

aFolderフォルダとファイルがあることがわかりますtutorial.txt
フォルダ内のファイルは何aFolderですか?
したがって、 $list = を次のように置き換えます

$list = ftp_rawlist($resource, '/aFolder');

phpスクリプトを再度実行します。出力 :

Array ( [0] => drwxr-xr-x 3 ftp ftp 4096 May 23 19:24 .. [1] => -rw-r--r-- 1 ftp ftp 167 May 23 20:25 tutorial.txt [2] => -rw-r--r-- 1 ftp ftp 271 May 23 21:16 tutorial.zip )

をダウンロードしますaFolder/tutorial.txt
以下を追加しますprint_r($list);

     echo "<br />\n";
     $local_file = "tmp.txt" ;
     $file = ftp_get($resource, $local_file, '/aFolder/tutorial.txt',FTP_ASCII);
      if ($file) {
         echo "$local_file has been successfully written\n";
     } else {
         echo "An error has occurred\n";
     }

出力 :

ここに画像の説明を入力

php スクリプトが置かれているフォルダーが変更されました。

ここに画像の説明を入力

今、新しいファイルがありますtmp.txt

この小さなスクリプトを実行する場合。さらに先に進むことができます。

私たちのチャットから :
あなたのサーバーは URL への ftp 呼び出しを許可していません。

見るallow_url_fopen = ON

echo ini_get('allow_url_fopen');

if (!ini_get('allow_url_fopen')) {
    ini_set('allow_url_fopen', 1);
}

echo ini_get('allow_url_fopen'); 

その後、もう一度試してください。

于 2013-05-22T17:40:47.623 に答える
0

最初の抜粋で、リモート タイルを次のように変更します。

`$remote_file = "compreport_abebooks_" .$date. ".zip";`

置く前に、ディレクトリに変更しています。

また、ftp_chdir呼び出しで参照するディレクトリは、先頭で参照される $remote_file のディレクトリとは異なることに注意してください。

 /home/bookcell/bookcellaronline.com/html/testbcos/accounting/

 /chroot/home/bookcellaronline.com/html/testbcos/accounting/
于 2013-05-22T17:06:44.127 に答える