6

我正在尝试使用 FTP 上传一些文件,但出现以下错误:

警告:ftp_login() 期望参数 1 是资源,在第 65 行的 /home/content/98/10339998/html/upload.php 中给出的布尔值 FTP 连接遇到错误!尝试连接到 thelegendmaker.net....

造成的:

// 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);

有谁知道为什么会这样?我试过不使用引号、双引号和单引号,但都没有。

4

3 回答 3

12

问题的根源在于,当ftp_connect()无法连接到 FTP 服务器时,它返回 FALSE 而不是它通常返回的资源链接标识符。使用 ping 检查您的 FTP 服务器是否处于活动状态

你可以这样做

if($conn_id){
     // login with username and password
     $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
}
于 2013-02-05T05:26:24.177 回答
5

如果不成功,ftp_connect 将返回 false。这将导致您遇到的错误消息而不是您登录。

我建议使用条件来避免在连接失败时尝试登录。

您有几个选择:

// 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);

或者

// 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);

因为我从您的服务器收到了对 ping 的响应。我的猜测是你没有正确配置你的 FTP 服务器。

于 2013-02-05T05:44:14.887 回答
2

根据手册说明;

成功时返回 FTP 流,错误时返回 FALSE。

因此,您可以应用这样的简单过滤器;

$conn_id = ftp_connect("thelegendmaker.net");
if (false === $conn_id) {
    throw new Exception("FTP connection error!");
}
...
于 2013-02-05T05:37:23.013 回答