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

问题描述:

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

[更新]
感谢您的帮助球员。我不熟悉ftp守护进程的东西。但我通过使用FireFTP通过ftp访问我的文件。该文件在那里,但试图下载它们或更改文件属性时,我得到了上述错误。我也尝试通过ftp上传文件夹中的文件,我可以下载它没有问题。

这里是我正在研究的一些代码,它的一种迂回,但我会看到如何改进它。

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

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

文件只包含此代码:

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

我检查和创建文件夹的权限设置为775

,这里是我在上传使用的代码(/注册/功能的一部分/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的和文件在/uplo ads/user_foldername/目录及其权限设置为664.奇怪的是,当我尝试下载文件时,有时根本没有问题,但有时会出现错误。

[其他更新] 我的副本()函数后添加CHMOD(),

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

,但我仍然得到错误。

另一件事是,当我访问/通过URL注册/上传/ user_foldername/,我可以看到所有上传的文件,并查看它们,但它是如何,我无法通过FTP访问它们?

再次感谢!

+0

请提供操作系统,其中错误是可复制的。 – 2009-11-05 08:34:21

+0

某些代码会很好,很难判断它是一个许可问题还是一个基本路径问题 – 2009-11-05 12:59:02

这是一个权限问题或配置错误。这里是你应该尝试的东西:

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

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

您可能需要chmod文件所在的文件夹,或者某些情况下文件本身。 尝试chmod将它们设置为775

您可以通过PHP自带chmod文件和文件夹,使用chmod函数。或者,您可以使用FTP程序,例如filezilla

另外检查以确保中间目录也被许可为755,因为路径中的所有目录需要是可执行的以便遍历。

+0

谢谢!我检查了中间目录,它们都被设置为775,但我仍然无法通过ftp访问这些文件。我必须错过某些东西。 – kregg 2009-11-06 01:55:49

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

<叹息>我应该已经看到了这较早,但无论如何,我希望这有助于万一有人遇到同样的问题。

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

+0

如果这确实是正确的答案,那么您应该接受它。 – 2009-11-06 05:30:10