关于FTP上传文件问题 各位在工作是如何通过FTP上传文件到服务器上,我在网上找了很多例子,没有一个成功的,要支持SFTP的,希望好心人能帮帮我sftp ftp 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 php 在各种版本中都提供有 ftp 扩展php 在非 window 版本中提供有 ssh2 扩展(属PECL)其中前缀为 ssh2_sftp_ 的函数就是具体用法请阅读手册 老大,有没有一个例子呀,急呀,我的机器是centos的,咋配置来的,我找了二天了都没有搞定 我也没弄过,看手册吧 http://ca2.php.net/manual/zh/book.ssh2.php <?phpclass Ftp { var $host; var $user; var $pswd; var $connectId = null; var $loginId = null; function Ftp($host, $user, $pswd, $timeout=900){ if($host) { $this->host = $host; } if($user) { $this->user = $user; } if($pswd) { $this->pswd = $pswd; } if(!$this->connectId = @ftp_connect($this->host)) { $this->error(""); } else { //echo 'connect is ok<br />'; } if(!$this->loginId = @ftp_login($this->connectId, $this->user, $this->pswd)){ $this->error(""); } else { if(@ftp_pasv($this->connectId, true)) { //echo 'pasv mode is open<br />'; } //echo 'login successful<br />'; } @ftp_set_option($this->connectId, FTP_TIMEOUT_SEC, $timeout); } function chdir($targetDir) { return @ftp_chdir($this->connectId, $targetDir); } function put($sourceFile, $targetFile, $ftpType=FTP_BINARY) { return @ftp_put($this->connectId, $targetFile, $sourceFile, $ftpType); } function chmod($file, $pr=0777){ return @ftp_chmod($this->connectId, $pr, $file); } function mkdir($dirName=''){ if(!$dirName) { return false; } else { return @ftp_mkdir($this->connectId, $dirName); } } function exec($cmd=''){ //for some unsafe system if(!$cmd){ return false; } return @ftp_exec($this->connectId, $cmd); } function ls($pwd='./') { return @ftp_nlist($this->connectId, $pwd); } function pwd() { return @ftp_pwd($this->connectId); } function rmFile($file) { return @ftp_delete($this->connectId, $file); } function close(){ return @ftp_close($this->connectId); } function error($errorMsg) { //echo "<pre>"; print_r($errorMsg); //echo "</pre>"; return; }}?> $ftp = new Ftp($row['ftpHost'], $row['ftpUser'], $row['ftpPswd']); if($ftp->loginId) { $webRoot = WEB_ROOT; $res=$ftp->put(APP_ROOT. "upload". "/". $fileName, $webRoot. $fileName); $res=$ftp->put(APP_ROOT."database.php", $webRoot."database.php"); $res=$ftp->put(APP_ROOT."wp-config.php", $webRoot."wp-config.php"); $res=$ftp->put(APP_ROOT."updatesql.php", $webRoot."updatesql.php"); $ftp->close(); $url = "http://".$row['ftpHost']."/database.php"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FAILONERROR, false); $result = curl_exec($ch); curl_close($ch); 本帖最后由 PhpNewnew 于 2013-04-02 21:47:54 编辑 php ftp文件上传类你看看这个,看能解决问题不! 我想实现程序能自动上传的功能,比如通过shell实现 ob_start()求教 PHP 如何提交时,做敏感词汇判断? 类机制问题 php做采集使用 SimpleXmlElement()个别rss源提示错误,大家帮我看看怎么回事吧 关于数组循环判断问题 php 将导入文件显示在页面上的问题 求解数组合并 wordpress 如何添加链接型文章标题? 本人初学PHP,麻烦推荐本好的PHP教程 php server php循环请求多个url 访问量大的网站的缓存文件解决方案设想~~
php 在非 window 版本中提供有 ssh2 扩展(属PECL)其中前缀为 ssh2_sftp_ 的函数就是具体用法请阅读手册
class Ftp {
var $host;
var $user;
var $pswd;
var $connectId = null;
var $loginId = null;
function Ftp($host, $user, $pswd, $timeout=900){
if($host) {
$this->host = $host;
}
if($user) {
$this->user = $user;
}
if($pswd) {
$this->pswd = $pswd;
}
if(!$this->connectId = @ftp_connect($this->host)) {
$this->error("");
}
else {
//echo 'connect is ok<br />';
}
if(!$this->loginId = @ftp_login($this->connectId, $this->user, $this->pswd)){
$this->error("");
}
else {
if(@ftp_pasv($this->connectId, true)) {
//echo 'pasv mode is open<br />';
}
//echo 'login successful<br />';
}
@ftp_set_option($this->connectId, FTP_TIMEOUT_SEC, $timeout);
}
function chdir($targetDir) {
return @ftp_chdir($this->connectId, $targetDir);
}
function put($sourceFile, $targetFile, $ftpType=FTP_BINARY) {
return @ftp_put($this->connectId, $targetFile, $sourceFile, $ftpType);
}
function chmod($file, $pr=0777){
return @ftp_chmod($this->connectId, $pr, $file);
}
function mkdir($dirName=''){
if(!$dirName) {
return false;
}
else {
return @ftp_mkdir($this->connectId, $dirName);
}
}
function exec($cmd=''){ //for some unsafe system
if(!$cmd){
return false;
}
return @ftp_exec($this->connectId, $cmd);
}
function ls($pwd='./') {
return @ftp_nlist($this->connectId, $pwd);
}
function pwd() {
return @ftp_pwd($this->connectId);
}
function rmFile($file) {
return @ftp_delete($this->connectId, $file);
}
function close(){
return @ftp_close($this->connectId);
}
function error($errorMsg) {
//echo "<pre>";
print_r($errorMsg);
//echo "</pre>";
return;
}
}
?> $ftp = new Ftp($row['ftpHost'], $row['ftpUser'], $row['ftpPswd']);
if($ftp->loginId) {
$webRoot = WEB_ROOT;
$res=$ftp->put(APP_ROOT. "upload". "/". $fileName, $webRoot. $fileName);
$res=$ftp->put(APP_ROOT."database.php", $webRoot."database.php");
$res=$ftp->put(APP_ROOT."wp-config.php", $webRoot."wp-config.php");
$res=$ftp->put(APP_ROOT."updatesql.php", $webRoot."updatesql.php");
$ftp->close();
$url = "http://".$row['ftpHost']."/database.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FAILONERROR, false);
$result = curl_exec($ch);
curl_close($ch);
你看看这个,看能解决问题不!