2008-11-11 22 views
16

Tôi có tập lệnh đăng nhập vào máy chủ từ xa và cố đổi tên tệp bằng cách sử dụng PHP.Cách nhận lỗi FTP khi sử dụng PHP

Mã này hiện trông giống như ví dụ này từ trang web php.net:

if (ftp_rename($conn_id, $old_file, $new_file)) { 
echo "successfully renamed $old_file to $new_file\n"; 
} else { 
echo "There was a problem while renaming $old_file to $new_file\n"; 
} 

nhưng ... lỗi là gì? Quyền, không có thư mục, đĩa đầy đủ?

Làm cách nào để lấy lại PHP để trả về lỗi FTP? Một cái gì đó như thế này:

echo "There was a problem while renaming $old_file to $new_file: 
the server says $error_message\n"; 

Trả lời

6

Nhìn vào API FTP ở đây:

http://us.php.net/manual/en/function.ftp-rename.php

Có vẻ như không được bất kỳ cách nào để có được bất cứ điều gì nhưng đúng hay sai.

Tuy nhiên, bạn có thể sử dụng ftp_raw để gửi lệnh RENAME thô và sau đó phân tích cú pháp thư trả về.

26

Bạn có thể sử dụng error_get_last() nếu giá trị trả về sai.

+3

Vâng, điều này là đúng trong trường hợp của tôi! – Ron

+2

Điều này luôn luôn là vô giá đối với tôi. Vấn đề của tôi là 'ftp_put', không phải' ftp_rename', vì vậy tôi không chắc nó có liên quan đầy đủ đến OP. Việc sửa chữa cho tôi là gọi 'ftp_pasv' trước' ftp_put'. Tôi đang trên Ubuntu 14.04 với php 5.5.9. –

8

tôi đang làm một cái gì đó như:

$trackErrors = ini_get('track_errors'); 
ini_set('track_errors', 1); 
if ([email protected]_put($my_ftp_conn_id, $tmpRemoteFileName, $localFileName, FTP_BINARY)) { 
    // error message is now in $php_errormsg 
    $msg = $php_errormsg; 
    ini_set('track_errors', $trackErrors); 
    throw new Exception($msg); 
} 
ini_set('track_errors', $trackErrors); 
+4

'$ php_errormsg' là gì? –

+0

@DanMantyla http://php.net/manual/en/reserved.variables.phperrormsg.php – alnorth29

Các vấn đề liên quan