2014-02-25 134 views
0

上失败我有一个工作代码,上传图片,它工作正常,我的临时服务器,但部署到住的时候,给出了“无法通过FTP传输”,请检查代码FTP不同的服务器

if (move_uploaded_file($_FILES['tempImage']['tmp_name'], $upload_to_temp)) { 
      $ftp_path = "employeeimages/" . $filename; 
      $ftphost = FTPDOMAIN; 
      $ftpusr = FTPUSER; 
      $ftppwd = FTPPASSWORD; 
      if (file_exists($upload_to_temp)) { 
       $conn_id = ftp_connect($ftphost) or die("Couldn't connect to $ftphost"); 
       $login_result = ftp_login($conn_id, $ftpusr, $ftppwd); 
       if (ftp_put($conn_id, $ftp_path, $upload_to_temp, FTP_BINARY)) { 
        unlink($upload_to_temp); 
        $image_up = $ftp_path; 

        mysql_query("UPDATE employees SET image = '".$ftp_path."' WHERE id = '".$newid."'"); 
       //  $_SESSION['emp_image'] = $ftp_path; 
       }else{ 
        echo "Error transferring file via ftp!<br/>"; 
        echo $filename . "<br/>"; 
        echo $upload_to_temp . "<br/>"; 
        echo $ftp_path . "<br/>"; 
       } 
      }else{ 
       echo "File does not exist in img/temp!"; 
      } 
     }else{ 
      echo "Error moving file to temp location!<br>"; 

     } 

你能猜出来吗?

感谢

+2

我甚至在代码中看不到字符串“无法通过FTP传输”。这是从哪里来的? – Mike

+0

对不起,这是错误通过ftp传输文件 –

+0

'var_dump($ login_result);'display? – Mike

回答

0

ftp_*()功能失败,通常会产生警告消息,我必须假设你已经设置error_reporting不显示它们。我建议至少暂时包裹你的if/else块象下面这样就可以诊断错误:

$prev = error_reporting(E_ALL); // turn on all error reporting levels 
if(ftp_put(...)) { 

} else { 

} 
error_reporting($prev); // revert to previous error reporting level 

另外,PHP可以在Apache或系统日志中记录这些错误,或者你不妨implment自己错误报告功能使用set_error_handler()来捕获此信息。