使用PHP上传SFTP本地文件
我在下面的脚本中尝试通过FTP模拟文件上传,但使用phpseclib将其更改为SFTP 脚本会很好地回响,直到出现以下行: $upload=$conn_id->put($path.'/').$name,$filep, NET_SFTP_本地_文件); echo“upload==”$upload.\n” 没有任何事情发生或打印出来 以下是完整的脚本:使用PHP上传SFTP本地文件,php,ftp,sftp,phpseclib,Php,Ftp,Sftp,Phpseclib,我在下面的脚本中尝试通过FTP模拟文件上传,但使用phpseclib将其更改为SFTP 脚本会很好地回响,直到出现以下行: $upload=$conn_id->put($path.'/').$name,$filep, NET_SFTP_本地_文件); echo“upload==”$upload.\n” 没有任何事情发生或打印出来 以下是完整的脚本: <? include('Net/SSH2.php'); if(!isset($_POST["submit"])){?> <fo
<?
include('Net/SSH2.php');
if(!isset($_POST["submit"])){?>
<form action="upload.php" method="POST" enctype="multipart/form-data">
<table align="center">
<tr>
<td align="right">
Server:
</td>
<td>
<input size="50" type="text" name="server" value="">
</td>
</tr>
<tr>
<td align="right">
Username:
</td>
<td>
<input size="50" type="text" name="user" value="">
</td>
</tr>
<tr>
<td align="right">
Password:
</td>
<td>
<input size="50" type="text" name="password" value="" >
</td>
</tr>
<tr>
<td align="right">
Path on the server:
</td>
<td>
<input size="50" type="text" name="pathserver" >
</td>
</tr>
<tr>
<td align="right">
Select your file to upload:
</td>
<td>
<input name="userfile" type="file" size="50">
</td>
</tr>
</table>
<table align="center">
<tr>
<td align="center">
<input type="submit" name="submit" value="Upload image" />
</td>
</tr>
</table>
</form>
<?}
else
{
set_time_limit(300);//for setting
$paths=$_POST['pathserver'];
echo "paths == ".$paths."\n";
$filep=$_FILES['userfile']['tmp_name'];
echo "filep == ".$filep."\n";
$sftp_server=$_POST['server'];
echo "sftp_server == ".$sftp_server."\n";
$sftp_user_name=$_POST['user'];
echo "sftp_user_name == ".$sftp_user_name."\n";
$sftp_user_pass=$_POST['password'];
echo "sftp_user_pass == ".$sftp_user_pass."\n";
$name=$_FILES['userfile']['name'];
echo "name == ".$name."\n";
// set up a connection to ftp server
$conn_id = new Net_SSH2($sftp_server);
// login with username and password
$login_result = $conn_id->login($sftp_user_name, $sftp_user_pass);
// check connection and login result
if ((!$conn_id) || (!$login_result)) {
echo "SFTP connection has encountered an error!";
echo "Attempted to connect to $sftp_server for user $sftp_user_name....";
exit;
} else {
echo "Connected to $sftp_server, for user $sftp_user_name".".....";
}
echo "HERE "."\n";
// upload the file to the path specified
$upload = $conn_id->put($paths.'/'.$name, $filep, NET_SFTP_LOCAL_FILE);
echo "upload == ".$upload."\n";
// check the upload status
if (!$upload) {
echo "SFTP upload has encountered an error!";
} else {
echo "Uploaded file with name $name to $sftp_server ";
}
// close the FTP connection
ftp_close($conn_id);
}
?>
服务器:
用户名:
密码:
服务器上的路径:
选择要上载的文件:
哪个库是NET/ssh2.php?看起来像
您正在混合他们的SSH2和SFTP库。直接取自他们的手册,您需要的代码是:
<?php
include('Net/SFTP.php');
$sftp = new Net_SFTP('www.domain.tld');
if (!$sftp->login('username', 'password')) {
exit('Login Failed');
}
echo $sftp->pwd() . "\r\n";
$sftp->put('filename.ext', 'hello, world!');
print_r($sftp->nlist());
?>
因此,只需将“put”函数中的$data更改为文件名,并像在代码中那样添加模式
另一种选择是PHP提供的PECL函数。它们具有“内置”的sftp功能。示例代码是,如果仍然不起作用,我们将更好地帮助调试,因为我们都可以访问它。哪个库是NET/ssh2.php?看起来像 您正在混合他们的SSH2和SFTP库。直接取自他们的手册,您需要的代码是:
<?php
include('Net/SFTP.php');
$sftp = new Net_SFTP('www.domain.tld');
if (!$sftp->login('username', 'password')) {
exit('Login Failed');
}
echo $sftp->pwd() . "\r\n";
$sftp->put('filename.ext', 'hello, world!');
print_r($sftp->nlist());
?>
因此,只需将“put”函数中的$data更改为文件名,并像在代码中那样添加模式
另一种选择是PHP提供的PECL函数。它们具有“内置”的sftp功能。示例代码是,如果它仍然不工作,我们将更好地帮助调试,因为我们都可以访问它。为什么它应该输出一些东西?var_dump($upload)说什么?为什么它应该输出一些东西?var_dump($upload)说什么?非常感谢;工作很好。下面是为可能需要它的任何人编写的代码:$sftp=new Net\u sftp($sftp\u server);//使用用户名和密码登录$login_result=$sftp->login($sftp_user_name,$sftp_user_pass);//如果(!$sftp)|(!$login_result)){echo“sftp连接遇到错误!”;echo“试图为用户$sftp_用户名连接到$sftp_服务器…”;退出;}否则{echo“连接到$sftp_服务器,为用户$sftp_用户名”。“…”}$upload=$sftp->put($paths.'/'.$name,$filep,NET_SFTP_LOCAL_FILE);非常感谢;非常好用。下面是给可能需要它的人的代码:$SFTP=new NET_SFTP($SFTP_server);//使用用户名和密码登录$login_result=$SFTP->login($SFTP user_name,$SFTP_user_pass);//如果(!$SFTP)|(!$login_result)){echo,请检查连接和登录结果“SFTP连接遇到错误!”;echo“试图为用户$SFTP_用户名连接到$SFTP_服务器…”;退出;}否则{echo“为用户$SFTP_用户名连接到$SFTP_服务器”。“…”;}$upload=$SFTP->put($path.'/'.$name、$filep、NET_-SFTP_-LOCAL_文件);