通过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访问它们?
再次感谢!
另外检查以确保中间目录也被许可为755,因为路径中的所有目录需要是可执行的以便遍历。
谢谢!我检查了中间目录,它们都被设置为775,但我仍然无法通过ftp访问这些文件。我必须错过某些东西。 – kregg 2009-11-06 01:55:49
我刚才发现了这个问题。这完全是因为文件名中有重音字符,这就解释了为什么我不总是收到错误信息:|
<叹息>我应该已经看到了这较早,但无论如何,我希望这有助于万一有人遇到同样的问题。
再次感谢!我真的很感激它:)
如果这确实是正确的答案,那么您应该接受它。 – 2009-11-06 05:30:10
请提供操作系统,其中错误是可复制的。 – 2009-11-05 08:34:21
某些代码会很好,很难判断它是一个许可问题还是一个基本路径问题 – 2009-11-05 12:59:02