2012-06-13 3 views
2

curl을 사용하여 로컬 호스트에 이미지를 다운로드하는 중 오류가 발생합니다. 권한이 좋고 디렉토리가 존재하는지 확인했습니다. 나는 다음에 무엇을 확인해야 할지를 놓치고 있습니다.PHP - localhost에 이미지 작성의 허가 문제

$saveto = 'images/'; 

if (!file_exists($saveto)) { 
mkdir ($saveto, 0777, true); 
} 

    $url = 'http://img.ffffound.com/static-data/assets/6/4dea2e91338b67cd926140acde1962403c3bf4c2_m.jpg'; 

echo getcwd() . "\n"; 

$ch = curl_init ($url); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1); 
$raw=curl_exec($ch); 
curl_close ($ch); 
if(file_exists($saveto) && is_writable($saveto)){ 
    unlink($saveto); 
} 
$fp = fopen($saveto,'x'); 


if(fwrite($fp, $raw)==false){ 
    echo 'no dice'; 
    return; 
} 
fclose($fp); 

** 아래

이 해결이 작업 코드입니다 : 이것은 내가 여기
Warning: unlink(images/) [function.unlink]: Operation not permitted in /Applications/MAMP/htdocs/test/image/instapaper.php on line 47 

받고 있어요 오류 것은 내 코드입니다. 기본적으로 내가 지정한 디렉토리 위치로 이미지를 저장하려는 것처럼 보입니다. 그 파일은 지워졌고 파일을 저장하기 위해 제공된 이미지 이름이 있습니다. 마지막 스크립트에서 이미지 이름은 URL에서 가져옵니다.

$url = 'http://img.ffffound.com/static-data/assets/6/4dea2e91338b67cd926140acde1962403c3bf4c2_m.jpg'; 
$saveto = 'images/'; 
$image_name = 'image.jpg'; 
$full_path = $saveto . $image_name; 

if (!file_exists($saveto)) { 
mkdir ($saveto, 0777, true); 
} 

$ch = curl_init ($url); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1); 
$raw=curl_exec($ch); 
curl_close ($ch); 
if(file_exists($full_path) && is_writable($full_path)){ 
    unlink($full_path); 
} 
$fp = fopen($full_path,'x'); 


if(fwrite($fp, $raw)==false){ 
    echo 'no dice'; 
    return; 
} 
fclose($fp); 
+0

디렉토리를 만들고 카테고리 연결 해제 ($ saveto)를 제거하십시오. 이유가 무엇입니까? – yAnTar

답변

4

$saveto은 디렉토리가 아닙니다. 사용자는 unlink()이 아니므로 rmdir()입니다.

+0

감사합니다.이 문제를 해결하는 데 도움이되었습니다. – captainill

0

경고는 unlink이고 cURL은 아닙니다. 그리고 당신이 디렉토리에 그것을하려고하는 것처럼 보이는데, 그것은 허용되지 않습니다, 그리고, 문서에 따르면, 실패는 경고를 생성합니다.

rmdir($dirname)을 사용하여 디렉터리를 제거 할 수 있지만 적절한 사용 권한과 함께이 작업을 수행하려면 디렉터리가 비어 있어야합니다.

0

글쎄, 시동기 unlink()는 파일을 제거하는 것이고, rmdir()은 디렉토리를 제거하는 것입니다. 또한 디렉토리가 비어 있어야합니다.

경고 : "경고 : 링크를 해제 (이미지 /)"하면 잘못된 기능이있는 폴더를 삭제하려고하는 것처럼 보입니다.