繁体   English   中英

从表单上传PHP ftp文件

[英]PHP ftp file upload from form

$host = 'XXXXXXXXXXX'
$usr = 'XXXXXXXXXXX';
$pwd = 'XXXXXXXXXXX';
$destDir = $_POST['filetype'];
$conn_id=ftp_connect($host);
$success = ftp_login($conn_id,$usr,$pwd);
$rightName = basename($_FILES['uploadfile']['name']);
ftp_pasv($conn_id, true);
if($success)
{ 
    ftp_put($conn_id,$destDir.'/'.$rightName,$_FILES['uploadfile']['tmp_name'],FTP_BINARY) or die('Cannot ftp');
    ftp_close($conn_id);
    echo ' Upload Successful';
} 

表格在这里

<form enctype="multipart/form-data" action="upload.php" method="POST">
    <input name="filetype" id="filetype1" /><br />
    <input name="uploadfile" type="file" /><br />
<input type="submit" value="Upload File" />

我尝试了多种选择。 从php的tmp上传位置将'ftp_put'到工作目录,然后再到目标目录,然后将'ftp_put'直接从PHP的临时上传目录复制到所需目录,但是由于某种原因,FTP似乎根本不起作用。 它只是死了。 使用'move_uploaded_files()'进行的正常上传效果完美。 在某些论坛中,提到要使ftp正常工作,我不能具有“文件”输入类型,而只能具有纯文本框。 我不明白为什么要这样,即使事实如此。 为什么上面的代码不起作用? 我已经检查了目标文件夹上的权限,这应该不是问题。

更新资料

抱歉,麻烦归结于文档问题。 文档中提到的F​​TP根目录不正确,并且代码中使用的FTP根目录与记录的FTP根目录不同,因此造成了麻烦。

在PHP中移动文件是一件棘手的事情,因为有很多事情在一起玩。

  1. 目标目录必须是服务器进程可写的。
  2. PHP具有安全功能。 其中之一称为safe_mode。 安全模式(除其他外)检查文件的UID和GID(用户ID和组ID),并限制例如允许哪些文件包含在内。 避免在脚本UID / GID所不拥有的目录中创建它们。 通常,与您上传的用户不是运行Web服务器的用户。因此,例如,在创建目录时,将使用Web服务器的UID / GID创建目录,并且无法通过具有不同版本的PHP脚本在其中创建文件UID / GID。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM