0

我不是一个PHPer,但我正在查看一个客户非常旧的网站,因为他遇到了一些错误。这是一个古老的定制 CMS,可以追溯到 2007 年 2 月。

尝试上传图片时出现错误:

警告:copy() [function.copy]:无法在 blah/blah/blah 中访问

这是有问题的代码的一部分:

$path= "images/".$new_file_name;

if($ufile !=none)
{
    if(copy($HTTP_POST_FILES['ufile']['tmp_name'], $path))
    {
        echo "<h1>uploading...</h1>";

        $img_name = $_POST['name'];

        mysql_query("UPDATE properties SET img_main='$Xnew_file_name_small',img_main_name='$img_name'  WHERE ref='$ref'");

        $small_image=imagecreatefromjpeg('images/'.$new_file_name);

        imagejpeg($small_image, 'images/'.$new_file_name_small, 50);

        unlink('images/'.$new_file_name);

        echo("<meta http-equiv='refresh' content='0;URL=upload_scipt_main_2.php?ref=". $ref."&img=".$new_file_name_small." '/>");
    }
    else
    {
        echo "Error";
    }
}

我想知道的是,这是否意味着复制功能对其尝试写入的路径没有写入权限。另外,由于网站太旧了,这个错误会不会是由于 PHP 版本正在升级引起的?现在是 5.3.14。

我意识到这可能是在黑暗中拍摄,可能有很多原因导致它不起作用,并且发布的代码位没有太大帮助,但任何指导都会非常有用。

4

1 回答 1

2

由于您的问题中包含的错误消息相当神秘,即blah/blah/blah,我无法判断它是应用于上传的文件还是目标。如果错误与目的地有关,则意味着images/您的 Web 服务器(例如 Apache)无法写入该目录。将文件夹的权限更新为可写可能足以解决问题。

另一方面,如果错误是关于上传的文件,我将不得不同意你的说法,即错误可能是由于 PHP 版本升级引起的。

根据文档,$HTTP_POST_FILES已经弃用了一段时间,取而代之的是 new(ish) $_FILES

在同一主题上,您似乎使用此代码基本上是“上传文件”。考虑到这一点,您将不想使用copy()but move_uploaded_file()

所以,而不是像这样的一行:

copy($HTTP_POST_FILES['ufile']['tmp_name'], $path)

你会想尝试:

move_uploaded_file($_FILES['ufile']['tmp_name'], $path)

尽管您可能在其他地方拥有它,但您还应该验证文件是否已上传;你可以用is_uploaded_file(). 结合上述内容和您的示例代码,以下内容应该是您的目标:

if(is_uploaded_file($_FILES['ufile']['tmp_name'])) {
    $path= "images/".$new_file_name;
    if(move_uploaded_file($_FILES['ufile']['tmp_name'], $path)) {
        echo "<h1>uploading...</h1>";

        $img_name = $_POST['name'];

        mysql_query("UPDATE properties SET img_main='$Xnew_file_name_small',img_main_name='$img_name'  WHERE ref='$ref'");

        $small_image=imagecreatefromjpeg('images/'.$new_file_name);

        imagejpeg($small_image, 'images/'.$new_file_name_small, 50);

        unlink('images/'.$new_file_name);

        echo("<meta http-equiv='refresh' content='0;URL=upload_scipt_main_2.php?ref=". $ref."&img=".$new_file_name_small." '/>");
    } else {
        echo "Error: The file could not be moved.";
    }
} else {
    echo "Error: The file could not be uploaded.";
}
于 2012-12-12T13:52:10.053 回答