使用php中ftp函数上传文件

  • 内容
  • 相关

在php中如何使用ftp函数实现此项功能呢?以及怎么排查php使用ftp函数上传文件失败的原因?

因为系统重构实现均衡负载,网站程序与文件服务器不在一台机子上。于是,程序在上传文件的同时就要将文件上传到文件服务器上。

这里涉及到windows主机上传到linux主机,linux主机上传到linux主机。这两个之间呢,只是稍微的有点区别,因为windows的路径可以兼容linux路径,但是linux的路径不兼容windows主机'\\'的写法。所以,在写路径的时候稍加注意即可。

下面,就列举上面两种情况php中使用ftp函数上传文件的具体实现代码。

一、 ftp上传图片参数说明。

$source:本机图片完整的路径。(/a/b/c.jpg)

$des   :上传目标linux主机完整的路径。

$ftp_server:ftp地址

$ftp_user_name:ftp用户名

$ftp_user_pass: ftp密码

$port:端口


二、如何使用php中ftp函数上传文件的方法

例如:

   本地地址为:/a/b/c.jpg

   目标地址为:/d/a/b/c.jpg

2.1、linux主机上传linux主机。

function ftpSendFile($source,$des,$ftp_server,$ftp_user_name,$ftp_user_pass,$port)

   {

       // 此步骤是在于上传目录与本机的目录不一致转换使用

       $des = "/d" . $des;

       $conn_id = ftp_connect($ftp_server, $port) or die("Couldn't connect to $ftp_server");

       $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

       ftp_pasv($conn_id, TRUE);

       $ftp_folder = dirname($des);

       $dir = explode("/", $ftp_folder);

       $path = "";

       for ($i = 0; $i < count($dir); $i++) {

           $path .= "/" . $dir[$i];

           if (!ftp_chdir($conn_id, $path)) {

               $result = ftp_mkdir($conn_id, $path);

           }

       }

       if (ftp_put($conn_id, $des, $source, FTP_BINARY)) {

           return 1;

       } else {

           return 0;

       }

       ftp_close($conn_id);

   }


2.2、windows主机上传linux主机。


function sendPic($source,$des,$ftp_server,$ftp_user_name,$ftp_user_pass,$port)

   {

       $des = "/d" . $des;

       $conn_id = ftp_connect($ftp_server, $port) or die("Couldn't connect to $ftp_server");

       $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

       ftp_pasv($conn_id, TRUE);

       $ftp_folder = dirname(str_ireplace('\\', '/', $des));

       $dir = explode("/", $ftp_folder)

       $path = "";

       for ($i = 0; $i < count($dir); $i++) {

           $path .= "/" . $dir[$i];

           if (!ftp_chdir($conn_id, $path)) {

               $result = ftp_mkdir($conn_id, $path);

           }

       }

       if (ftp_put($conn_id, str_ireplace('\\', '/', $des), $source, FTP_BINARY)) {

           return 1;

       } else {

           return 0;

       }

       ftp_close($conn_id);

   }

上面的两种使用php中ftp函数上传文件的方法基本可以满足正常的使用。


可是,在实际的过程中可能还会遇到上传失败的问题,那么,我们该怎么解决呢?


三、如何排查php使用ftp函数上传失败的原因?


1、帐号密码端口不对,引发的上传失败?


答:这种问题属于常识,不清楚的咨询运维或者空间商等。


2、上传目录无权限,引发的上传失败?


答:将上传目录最好设置为777。


3、ftp用户上传无权限,引发的上传失败?


答:查看ftp用户是否有权限上传到指定的目录,可咨询运维或者空间商等。


4、上传路径错误,引发的上传失败?


答:仔细比对本地上传文件地址与目标上传文件地址,是否真的存在。


通过上面的四个步骤就可以基本的排查出php使用ftp函数上传失败的原因。

使用php中ftp函数上传文件
         本页正文内容约2050个文字
         本文标签:

         版权声明:若无特殊注明,本文皆为“懒人的小窝”原创,转载请保留文章出处。

         本文链接:https://suppore.cn/516.html   百度未收录

发表评论

电子邮件地址不会被公开, 推荐使用QQ快速评论!

评论

2条评论
  1. avatar

    落雁 Lv.1 Chrome 57.0.2987.110 Chrome 57.0.2987.110 Windows Windows 回复

    [code]签到成功!签到时间: 晚上10时44分52秒,签到运到,生活乐逍遥![/code]

    湖南省邵阳市 电信

    1. avatar

      捕鱼游戏 Lv.3 Chrome 21.0.1180.89 Chrome 21.0.1180.89 Windows 7 x64 Edition Windows 7 x64 Edition 回复

      支持博主

      福建省厦门市 联通

      00:00 / 00:00
      顺序播放