2013-02-05 13 views
6

Próbuję przesłać kilka plików z FTP i mam następujący błąd:ftp_login oczekuje parametr 1 być zasobem

Warning: ftp_login() expects parameter 1 to be resource, boolean given in /home/content/98/10339998/html/upload.php on line 65 FTP connection has encountered an error!Attempted to connect to thelegendmaker.net....

spowodowanych przez:

// set up a connection to ftp server 
$conn_id = ftp_connect("thelegendmaker.net"); 

// login with username and password 
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 

Czy ktoś wie dlaczego tak się dzieje? Próbowałem używać bez cudzysłowów, podwójnych cudzysłowów i pojedynczych cudzysłowów i nie działało.

Odpowiedz

11

Problem polega na tym, że gdy ftp_connect() nie może połączyć się z serwerem FTP, zwraca FALSE zamiast generatora, który zwykle zwraca. Sprawdź, czy Twój serwer FTP jest żywy przy użyciu polecenia ping

można zrobić jak

if($conn_id){ 
    // login with username and password 
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
} 
+0

Podobny do: http://forums.devshed.com/showpost.php?p=956346&postcount=2 – Shog9

2

Według ręczne notatki;

Returns a FTP stream on success or FALSE on error.

Można więc zastosować prosty filtr;

$conn_id = ftp_connect("thelegendmaker.net"); 
if (false === $conn_id) { 
    throw new Exception("FTP connection error!"); 
} 
... 
5

ftp_connect zwróci wartość false, jeśli się nie uda. To, co spowoduje, to komunikat o błędzie, w którym się pojawia, zamiast się zalogować.

Polecam użycie warunku, aby uniknąć próby zalogowania się, gdy połączenie nie powiedzie się.

Kilka opcji masz:

// set up a connection to ftp server 
$conn_id = ftp_connect("thelegendmaker.net") or die("Unable to connect to server."); 

// login with username and password 
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 

lub

// set up a connection to ftp server 
$conn_id = ftp_connect("thelegendmaker.net"); 

// login with username and password 
if($conn_id !== false) $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 

Ponieważ otrzymuję odpowiedzi od serwera do ping. Domyślam się, że nie skonfigurowałeś poprawnie swojego serwera FTP.

Powiązane problemy