, 왜 그냥 대신에 그들을 다시 복용 후, 그들을 밖으로 보내는 통해 파일을 복사하지? 아웃 바운드 및 인바운드 연결로 포트 21 (FTP)을 막히고 있다고 생각합니다.
:: 편집 : 나는 이것을 알고
는 코드 검토 아니지만, 여기에 약간의 개선의 소수의 개정이다 :
$ftp_server = "HOST_NAME";
$ftp_user_name = "USERNAME";
$ftp_user_pass = "PASSWORD";
$ftp_folder = "/FTP_DIRECTORY";
$path = "/testing/";
$file_name = $_FILES["theFile"]["name"];
$source_file = $_FILES["theFile"]["tmp_name"];
/**
* OLD CODE:
* $destination_file = $ftp_folder . $path . $file_name;
* $destination_path = $ftp_folder . $path;
*
* NEW CODE:
* $destination_path = $ftp_folder . $path;
* $destination_file = $destination_path . $file_name;
*
* REASON FOR CHANGE: Saves you 1 concat, also, 1 less use of ftp_folder and path
*/
$destination_path = $ftp_folder . $path;
$destination_file = $destination_path . $file_name;
function uploadFTP($ftp_server, $ftp_user_name, $ftp_user_pass, $source_file, $destination_file, $destination_path) {
/**
* OLD CODE:
* $conn_id = @ftp_connect($ftp_server); # set up basic connection
*
* REASON FOR CHANGE: There are times to suppress errors, this is not one of them.
*/
$conn_id = ftp_connect($ftp_server) or die('Couldn\'t connect to ' . $ftp_server); # set up basic connection
/**
* REASON FOR NO CHANGE: ftp_login throws a warning on failure.
*/
$login_result = @ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); # login with username and password
if (empty($conn_id) || empty($login_result)) { # check connection
return false;
} else {
/**
* OLD CODE:
* $check = @ftp_chdir($conn_id, $destination_path)
*
* REASON FOR CHANGE: $check is redundant
*/
if (@ftp_chdir($conn_id, $destination_path)) { # check to see if folder is there
/**
* OLD CODE:
* $upload = @ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);
*
* REASON FOR CHANGE: $upload is redundant
*/
if (ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY)) { # upload the file & check upload status
return true;
} else {
return false;
}
} else {
/**
* OLD CODE:
* $check = @ftp_mkdir($conn_id, $destination_path);
*
* REASON FOR CHANGE: $check is redundant
*/
if (@ftp_mkdir($conn_id, $destination_path)) { # make new folder
/**
* OLD CODE:
* $upload = @ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);
*
* REASON FOR CHANGE: $upload is redundant
*/
if (@ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY)) { # upload the file & check upload status
return true;
} else {
return false;
}
} else {
return false;
}
}
}
ftp_close($conn_id); # close ftp
}
버전 2 :
$ftp_server = "HOST_NAME";
$ftp_user_name = "USERNAME";
$ftp_user_pass = "PASSWORD";
$ftp_folder = "/FTP_DIRECTORY";
$path = "/testing/";
$file_name = $_FILES["theFile"]["name"];
$source_file = $_FILES["theFile"]["tmp_name"];
$destination_path = $ftp_folder . $path;
$destination_file = $destination_path . $file_name;
function uploadFTP($ftp_server, $ftp_user_name, $ftp_user_pass, $source_file, $destination_file, $destination_path) {
$conn_id = ftp_connect($ftp_server) or die('Couldn\'t connect to ' . $ftp_server); # set up basic connection
$login_result = @ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); # login with username and password
if (empty($conn_id) || empty($login_result)) { # check connection
return false;
} else {
if (@ftp_chdir($conn_id, $destination_path)) { # check to see if folder is there
/**
* OLD CODE:
* if (ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY)) { # upload the file & check upload status
* return true;
* } else {
* return false;
* }
*
* REASON FOR CHANGE: DRY (Don't Repeat Yourself). Abstracted code above to function.
*/
return uploadFTP_ftpPut($conn_id, $destination_file, $source_file);
} else {
if (@ftp_mkdir($conn_id, $destination_path)) { # make new folder
/**
* OLD CODE
* ...
*
* REASON FOR CHANGE: See above.
*/
return uploadFTP_ftpPut($conn_id, $destination_file, $source_file);
} else {
return false;
}
}
}
ftp_close($conn_id); # close ftp
}
function uploadFTP_ftpPut($conn_id, $destination_file, $source_file){
# upload the file & check upload status
if (@ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY)) return true;
else return false;
}
의견이없는 버전 3 :
$ftp_server = "HOST_NAME";
$ftp_user_name = "USERNAME";
$ftp_user_pass = "PASSWORD";
$ftp_folder = "/FTP_DIRECTORY";
$path = "/testing/";
$file_name = $_FILES["theFile"]["name"];
$source_file = $_FILES["theFile"]["tmp_name"];
$destination_path = $ftp_folder . $path;
$destination_file = $destination_path . $file_name;
function uploadFTP($ftp_server, $ftp_user_name, $ftp_user_pass, $source_file, $destination_file, $destination_path) {
$conn_id = ftp_connect($ftp_server) or die('Couldn\'t connect to ' . $ftp_server); # set up basic connection
$login_result = @ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); # login with username and password
if (empty($conn_id) || empty($login_result)) return false; # check connection
if (@ftp_chdir($conn_id, $destination_path)) { # check to see if folder is there
return uploadFTP_ftpPut($conn_id, $destination_file, $source_file);
} else {
if (@ftp_mkdir($conn_id, $destination_path)) { # make new folder
return uploadFTP_ftpPut($conn_id, $destination_file, $source_file);
} else {
return false;
}
}
# BTW - you never get here :)
ftp_close($conn_id); # close ftp
}
function uploadFTP_ftpPut($conn_id, $destination_file, $source_file){
# upload the file & check upload status
if (@ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY)) return true;
else return false;
}
ftp 주소에 따라 트래픽이 라우터 외부로 나가 네트워크로 되돌아 가야 할 수도 있습니다. 터미널에서'tracert '를 시도하십시오. –