ftp在本地能往远程服务器上传文件,但是放到服务器上就不好使了

dfsr 2015-07-01 08:50:45
网站购买的万网的虚拟主机,无法修改php.ini,也没有办法是用.htaccess来修改上传文件大小,故上传大于10M的文件只好使用ftp方式,代码如下:
$ftp_server= "xxxx.xxxx.com";
$ftp_user_name= "xxxx";
$ftp_user_pass= "xxxxx";
$local_file = "D:/Lyb_0/zmsgx.mp4"; //本地文件
$server_file = "htdocs/videos/zmsgx.mp4"; //待上传后文件所在路径
$conn_id = ftp_connect($ftp_server); //联接FTP
$login_result = ftp_login($conn_id,$ftp_user_name,$ftp_user_pass) or die("Login error"); //登录
$fp=fopen($local_file,"r");
ftp_pasv($conn_id, true); //开启被动模式传输
//上传参数
if(ftp_fput($conn_id,$server_file,$fp,FTP_BINARY)) {
echo "Successfully uploaded $server_file\n";
}else{
echo "There was a problem while uploading $file\n";
}
//关闭连接
ftp_close($conn_id);
fclose($fp);

但是这段代码只在本地好使,放到服务器上就好使了,fopen($local_file,"r");无法打开本地文件。请问如何解决?
...全文
489 5 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xuzuning 2015-07-01
直接在本地使用 ftp 客户端上传文件 其实你那个“本地好使”,就是 php 写的 ftp 客户端
  • 打赏
  • 举报
回复
码无边 2015-07-01
$local_file 这个无法取到本地文件吧。
  • 打赏
  • 举报
回复
dfsr 2015-07-01
引用 1 楼 xuzuning 的回复:
你先确认 fopen 是否可用 在服务器上所谓“本地文件”是指服务器上的文件 所以你使用 ftp 绕过 upload 限制的做法,是不现实的
,请问有别的思路吗?
  • 打赏
  • 举报
回复
xuzuning 2015-07-01
你先确认 fopen 是否可用 在服务器上所谓“本地文件”是指服务器上的文件 所以你使用 ftp 绕过 upload 限制的做法,是不现实的
  • 打赏
  • 举报
回复
small虾米 2015-07-01
class Ftp{ public $ftpconn; public static $_instance = array(); private function __construct($host,$username,$password) { $this->ftpconn = ftp_connect($host); $this->login($username, $password); } public function login($username, $password){ ftp_login($this->ftpconn, $username, $password); } public static function getInstance($host,$username,$password){ $key = md5($host.'-'.$username.'-'.$password); if(!isset(self::$_instance[$key]) || !(self::$_instance[$key] instanceof self)){ self::$_instance[$key] = new self($host, $username, $password); } return self::$_instance[$key]; } public function __clone(){ trigger_error('该类禁止克隆',E_USER_ERROR); } public function __destruct() { ftp_close($this->ftpconn); } public function nlist($dir){ $filelist = ftp_nlist($this->ftpconn, $dir); return $filelist; } //切换当前目录的父目录 public function cdup(){ return ftp_cdup($this->ftpconn); } //在 FTP 服务器上改变当前目录 public function chdir($dir){ return @ftp_chdir($this->ftpconn, $dir); } //修改文件权限 public function chmod ($dir,$mode){ return ftp_chmod($this->ftpconn, $mode, $dir); } //删除文件 public function delete($filename){ return ftp_delete($this->ftpconn, $filename); } //请求运行一条 FTP 命令(true,false) public function exec($command){ return ftp_exec($this->ftpconn,$command); } //从 FTP 服务器上下载一个文件并保存到本地一个已经打开的文件中 //mode传输模式只能为 (文本模式) FTP_ASCII 或 (二进制模式) FTP_BINARY 其中的一个。 public function fget ($handle,$remote_file,$mode,$resumepos = 0){ return ftp_fget($this->ftpconn,$handle,$remote_file,$mode,$resumepos); } //上传一个已经打开的文件到 FTP 服务器 //mode传输模式只能为 (文本模式) FTP_ASCII 或 (二进制模式) FTP_BINARY 其中的一个。 public function fput ($remote_file,$handle,$mode,$resumepos = 0 ){ return ftp_fput($this->ftpconn,$remote_file,$handle,$mode,$resumepos); } //返回当前 FTP 连接的各种不同的选项设置 public function get_option($option=FTP_TIMEOUT_SEC){ return ftp_get_option($this->ftpconn,$option); } //从 FTP 服务器上下载一个文件 public function get($local_file,$remote_file ,$mode,$resumepos=0){ return ftp_get($this->ftpconn,$local_file,$remote_file ,$mode,$resumepos); } //返回指定文件的最后修改时间 public function mdtm ($remote_file){ return ftp_mdtm ($this->ftpconn,$remote_file); } //建立新目录 public function mkdir($dir,$directory){ $this->chdir($dir); return @ftp_mkdir($this->ftpconn,$directory); } //连续获取/发送文件(non-blocking) public function nb_continue(){ return ftp_nb_continue($this->ftpconn); } //Retrieves a file from the FTP server and writes it to an open file (non-blocking) public function nb_fget ($handle,$remote_file,$mode,$resumepos = 0){ return ftp_nb_fget ($this->ftpconn,$handle,$remote_file,$mode,$resumepos); } //Stores a file from an open file to the FTP server (non-blocking) public function nb_fput ($remote_file,$handle,$mode,$resumepos = 0 ){ return ftp_nb_fput ($this->ftpconn,$remote_file,$handle,$mode,$resumepos); } //从 FTP 服务器上获取文件并写入本地文件(non-blocking) public function nb_get ($local_file,$remote_file ,$mode,$resumepos=0){ return ftp_nb_get ($this->ftpconn,$local_file,$remote_file ,$mode,$resumepos); } //存储一个文件至 FTP 服务器(non-blocking) public function nb_put ($remote_file ,$local_file,$mode,$resumepos=0){ return ftp_nb_put ($this->ftpconn,$remote_file ,$local_file,$mode,$resumepos); } //返回当前 FTP 被动模式是否打开 public function pasv($pasv){ return ftp_pasv($this->ftpconn,$pasv); } //上传文件到 FTP 服务器 public function put ($remote_file ,$local_file,$mode,$resumepos=0){ return ftp_put ($this->ftpconn,$remote_file ,$local_file,$mode,$resumepos); } //返回当前目录名 public function pwd (){ return ftp_pwd ($this->ftpconn); } //Sends an arbitrary command to an FTP server public function raw ($command){ return ftp_raw ($this->ftpconn,$command); } //返回指定目录下文件的详细列表 public function rawlist($directory){ return ftp_rawlist($this->ftpconn,$directory); } //更改 FTP 服务器上的文件或目录名 public function rename($oldname ,$newname){ return ftp_rename($this->ftpconn,$oldname , $newname); } //删除 FTP 服务器上的一个目录 public function rmdir($directory){ return ftp_rmdir($this->ftpconn,$directory); } //设置各种 FTP 运行时选项 public function set_option ($option,$value){ return ftp_set_option ($this->ftpconn,$option,$value); } //向服务器发送 SITE 命令 public function site ($cmd){ return ftp_site ($this->ftpconn,$cmd); } //返回指定文件的大小 public function size ($remote_file){ return ftp_size ($this->ftpconn,$remote_file); } //Opens an Secure SSL-FTP connection public function ssl_connect($host){ $this->ftpconn = ftp_ssl_connect($host); } //返回远程 FTP 服务器的操作系统类型 public function systype (){ return ftp_systype ($this->ftpconn); } }
  • 打赏
  • 举报
回复
相关推荐
发帖
基础编程
加入

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
申请成为版主
帖子事件
创建了帖子
2015-07-01 08:50
社区公告
暂无公告