0

私はあまり PHPer ではありませんが、エラーが発生しているため、クライアントの非常に古いサイトを見ています。これは、2007 年 2 月にさかのぼる、古いオーダーメイドの CMS です。

画像をアップロードしようとすると、次のエラーが表示されます。

警告: copy() [function.copy]: 何とか/何とか/何とかでアクセスできません

これは、問題のコードの一部です。

$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 に答える