通过php上传的文件:没有这样的文件或目录

时间:2009-11-05 08:04:17

标签: php ftp

我正在一个用户可以上传图片的网站上工作(使用php 4.3.11)。文件上传没有问题,因为我可以在上传目录中看到它们,我没有收到任何错误消息,但当我尝试通过ftp访问上传的文件时,我收到一个错误:没有这样的文件或目录的。有时,我能够访问该文件有时我得到此错误。这可能是什么问题?

[更新]
谢谢你的帮助。我不熟悉ftp守护进程的东西。但我使用FireFTP通过ftp访问我的文件。文件在那里但是当尝试下载或更改文件属性时,我得到了上述错误。我也尝试通过ftp上传文件夹中的文件,我可以毫无问题地下载它。

这里有一些我正在研究的代码,它的回旋类型,但我会看到如何改进它。

我的工作目录是这样的 www.domain.com/register /
上传目录在这里 www.domain.com/register/uploads /

用户需要注册,注册后,会在uploads目录中为他们创建一个文件夹。我找不到创建文件夹的方法,而不必在uploads文件夹中,所以我重定向到上传中的 create-user-folder.php 文件DIR。

该文件只包含此代码:

    $user_foldername = rawurldecode($_GET['name']);
    mkdir($user_foldername);
    header("Location: ../form.php");     // redirect back to the page

我检查过,创建的文件夹权限设置为775。

这是我在上传时使用的代码的一部分( /register/function/function.php ):

    $path = "../uploads/$user_foldername/";
    for($j = 0; $j < $num_of_uploads; $j++){
        if(is_uploaded_file($_FILES[$file]['tmp_name'][$j])){
            $filename = $_FILES[$file]['name'][$j];
            copy($_FILES[$file]['tmp_name'][$j],$path.$filename);
        }
    }

我使用FireFTP进行了检查,文件位于 / uploads / user_foldername / 目录中,其权限设置为664.奇怪的是,当我尝试下载文件时,有时会出现根本没有问题,但有时会出现错误。

[另一个更新] 我在copy()函数之后添加了chmod(),

    $filename = $_FILES[$file]['name'][$j];
    copy($_FILES[$file]['tmp_name'][$j],$path.$filename);
    chmod($path.$filename, 0755);

但我仍然得到错误。

另一件事是,当我通过网址访问 / register / uploads / user_foldername / 时,我可以看到所有上传的文件并查看它们,但是我怎么也无法访问他们通过ftp?

再次感谢!

4 个答案:

答案 0 :(得分:0)

这是权限问题或配置错误。以下是你应该尝试的事情:

上传文件的权限是什么? FTP用户是否可以访问这些文件?您是否尝试以FTP守护程序将使用的用户身份登录,并查看您是否可以通过该方式读取文件?

你真的看到了正确的目录吗?您是否已通过自己将文件放入该目录并下载来验证?您是否使用ftp命令ls来验证文件夹/文件夹/文件的存在?

答案 1 :(得分:0)

您可能需要chmod文件所在的文件夹,或者在某些情况下文件本身。 试试chmod他们到775

您可以使用chmod功能通过PHP自行修改文件和文件夹。或者,您可以使用诸如filezilla之类的FTP程序。

答案 2 :(得分:0)

同时检查以确保中间目录也被许可为755,因为路径中的所有目录都需要可执行才能遍历。

答案 3 :(得分:0)

我刚才发现了问题。这都是因为文件名中有重音字符,这就解释了为什么我不总是得到错误信息:|

&lt; sigh&gt; 我应该早些看到这个,但无论如何,我希望这有助于万一有人遇到同样的问题。

再次感谢!我真的很感激:)