我正在一个用户可以上传图片的网站上工作(使用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?
再次感谢!
答案 0 :(得分:0)
这是权限问题或配置错误。以下是你应该尝试的事情:
上传文件的权限是什么? FTP用户是否可以访问这些文件?您是否尝试以FTP守护程序将使用的用户身份登录,并查看您是否可以通过该方式读取文件?
你真的看到了正确的目录吗?您是否已通过自己将文件放入该目录并下载来验证?您是否使用ftp
命令ls
来验证文件夹/文件夹/文件的存在?
答案 1 :(得分:0)
您可能需要chmod
文件所在的文件夹,或者在某些情况下文件本身。
试试chmod
他们到775
答案 2 :(得分:0)
同时检查以确保中间目录也被许可为755,因为路径中的所有目录都需要可执行才能遍历。
答案 3 :(得分:0)
我刚才发现了问题。这都是因为文件名中有重音字符,这就解释了为什么我不总是得到错误信息:|
&lt; sigh&gt; 我应该早些看到这个,但无论如何,我希望这有助于万一有人遇到同样的问题。
再次感谢!我真的很感激:)