将文件发送到linux服务器

时间:2012-03-19 07:48:09

标签: php

我是php的新手,我正试图通过ftp将文件发送到运行的计算机上 “Centos 6”(Linux服务器)。 我的代码是:

<?php
$ftp_server = "XX.XXX.XXX.XXX";
$ftp_user = "user";
$ftp_pass = "password";

//set up a connection or die
 $conn_id = ftp_connect($ftp_server,22) or die("Couldn't connect to $ftp_server"); 
 ftp_pasv($conn_id, true);

 //try to login
 if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) {
    echo "Connected as $ftp_user@$ftp_server\n";
 } else {
    echo "Couldn't connect as $ftp_user\n";
 }

  //close the connection
 ftp_close($conn_id);  
?>

我正在运行最新版本的Mysql和Apache,并且还禁用了服务器中的防火墙。我可以使用Filezilla访问服务器,但仅限于使用端口22。

2 个答案:

答案 0 :(得分:2)

问题是,您正在尝试使用FTP协议连接到仅响应SFTP的服务器(端口22是SSH,它本质上提供文件传输功能),但它完全是一个不同的协议。

请尝试查看ssh2函数:http://php.net/manual/en/function.ssh2-sftp.php

答案 1 :(得分:2)

我就这样做了:

<?php
include('Net/SFTP.php');

$sftp = new Net_SFTP('xx.xxx.xxx.xxx');
if (!$sftp->login('user', 'pass')) {
    exit('Login Failed');
}

//Write to a text file
$sftp->put('destinationInServer/filename', file_get_contents('Source/filename'));
echo "Success";
?>