5

这是独家新闻:我需要能够使用 PHP 脚本创建文件夹,并将图像文件上传到这些文件夹。这是我的代码:

创建目录:

mkdir('[path]/images/foldername');  


上传图片:

if ($_FILES["file"]["error"] > 0 || $_FILES["file"]["type"] != "image/jpeg") // file must be valid and .jpg
{
    echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Stored in: " . $_FILES["file"]["tmp_name"] . '<br />';

    if(file_exists($path ."/" . $_FILES["file"]["name"]))
    {
        echo $_FILES["file"]["name"] . " already exists. ";
    }
    else
    {
        move_uploaded_file($_FILES["file"]["tmp_name"], $path ."/" . $_FILES["file"]["name"]);
        echo "Stored in: " . $path ."/" . $_FILES["file"]["name"];
    }
}

FTP 编辑器给出这些错误:

[L] DELE 20.jpg
[L] 550 Could not delete imagename.jpg: Permission denied

然后

[L] RMD foldername
[L] 550 Can't remove directory: Directory not empty

我尝试在我的 FTP 编辑器中更改权限,但收到此错误:

[L] SITE CHMOD 777 [path]/foldername [L] 550 无法更改 [path]/foldername 上的权限:不允许操作
我尝试使用 SSH 和 Putty 删除文件,但这也不起作用。

请帮我!

4

3 回答 3

4

移动上传的文件后,尝试执行以下操作:

@chmod($path ."/" . $_FILES["file"]["name"], 0777);

或者其他的东西。您可能希望将权限更改为更好的权限。

于 2012-05-18T22:43:59.907 回答
3

看起来您的 PHP 安装以不同于 FTP 会话的用户身份运行。因此,您的 php 上传脚本可以创建您的 ftp 用户无法触及的文件;-)。

基本上有三种方法来处理这个问题:

  1. 编写一个删除要删除的文件的 php 脚本。为此使用 unlink()。谷歌也会给你一些递归实现。
  2. 更改文件的权限(使用 chmod。小心,您很容易使不应该有这种可能性的人或进程可以访问文件。不要在生产环境中这样做)
  3. 确保您的 ftp 用户和您的 php 用户相同。您需要在目标机器上成为 root,或者您需要机器上的友好管理员来进行相应的设置。
于 2012-05-18T22:48:29.847 回答
2

您可以更改运行 FTP 服务器的用户帐户以使用与您的 PHP 脚本相同的用户(可能是 www-data 或 httpd)

于 2012-05-18T22:46:00.207 回答