2012-12-12 2 views
0

저는 PHPer를 많이 좋아하지 않지만 클라이언트에게 아주 오래된 사이트를보고 있습니다. 오류가 발생했습니다. 그것은 이미지를 오류 업로드하려고 할 때 2월 2007copy()와 관련된 문제

로 되돌아가는 CMS를 고대 예약했다 것 :

$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"; 
    } 
} 
:이 문제의 코드의 일부이다

Warning: copy() [function.copy]: Unable to access in blah/blah/blah

내가 알고 싶은 건 복사 기능이 쓰기를 시도하는 경로에 대한 쓰기 권한이 없다는 것입니다. 또한 사이트가 너무 오래되었으므로이 오류는 업그레이드되는 PHP 버전으로 인해 발생할 수 있습니까? 지금은 5.3.14에 있습니다.

나는 이것이 어둠 속에서 찍힌 장면 일 가능성이 높다. 그리고 그것이 작동하지 않는 수많은 이유가있을 수 있으며, 게시 된 코드의 비트는별로 도움이되지 않지만, 어떤 지침도 실제로는 유능한.

+0

감사의 말 Tim. 나를 위해 제대로 포맷하지 않을 것입니다 : -/ –

+0

예, 이것은 PHP가'images /'에 대한 쓰기 권한을 가지고 있지 않다는 것을 의미합니다. –

답변

2

질문에 포함 된 오류 메시지가 다소 이상합니다 (예 : blah/blah/blah). 업로드 된 파일 또는 대상에 적용되는지 확인할 수 없습니다. 오류가 대상과 관련이 있으면 images/ 디렉토리에 웹 서버 (예 : Apache)가 쓸 수 없음을 의미합니다. 쓰기 권한이있는 폴더의 권한을 업데이트하면 문제를 해결하는 데 충분할 수 있습니다.

반면에 업로드 된 파일과 관련하여 오류가 발생하는 경우 오류 코드 일 수 있다고 진술 문에 동의해야합니다. 업그레이드되는 PHP 버전 때문입니다.

설명서에 따르면 은 새로운 (ish) $_FILES에 찬성하여 잠시 사용이 중단되었습니다.

동일한 주제에서이 코드를 사용하여 기본적으로 "파일 업로드"하는 것으로 보입니다. 이를 염두에두고 copy() 대신 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."; 
} 
+0

당신은 범례를 사용합니다. 그것은 완전히 그것을 고쳤다. 추가 이미지를 업로드하기위한 또 다른 스크립트가 있었지만 코드를 사용하여 알아 냈으므로 이제는 잘 작동합니다. 정말 고마워요. 그건 내게 며칠이 걸릴 것이라고 생각합니다. :) –