Drupal file_copy가 작동하지 않습니다


11

다음 코드가 있습니다.

$main_image = glob('main*.{jpeg,gif,png,jpg,JPEG,JPG,PNG}', GLOB_BRACE);
if (count($main_image) != 1) 
    die("Could not find main picture !");  

$file_path = drupal_realpath($main_image[0]);
$file = (object) array(
            'uid' => $userID,
            'uri' => $file_path,
            'filemime' => file_get_mimetype($file_path),
            'display' => 1,
            'filename' => $main_image[0]
);
// copy the file in the correct folder
$destination = "public://galerii_imagini/" . $file->filename;
 if ($file = file_copy($file, $destination, FILE_EXISTS_REPLACE)) {} else {
    die("Could not copy " . $file_path . " in " . $destination);
}

내 코드에 문제가 있습니까? 나는 항상 마지막 if 문 안에서 die 명령으로부터 메시지를 받는다.

도움을 주시면 감사하겠습니다.

편집 : Stanislav Agapov 덕분에 drupal에서 로그를 찾았습니다. 메시지는 다음과 같습니다

대상 디렉토리 public : // galerii_imagini가 올바르게 구성되지 않았으므로 파일 .... / main_ROSE2106.JPG를 복사 할 수 없습니다.

올바르게 구성하려면 어떻게해야합니까? / admin / config / media / file-system에 sites / default / files 경로를 공개 파일로 설정했습니다. 설정할 다른 것이 있습니까?

편집 # 2 : 전체 / sites / default / files 트리에 777을 설정했습니다.


2
기능 file_copy과 호출 기능이 작동 file_unmanaged_copy오류가 시스템 로그에 메시지를 쓰기의 경우. "최근 로그 메시지"보고서를 보셨습니까? 아마 당신은 거기에 대답을 찾을 것입니다 ...
Stanislav Agapov

파일 디렉토리가 쓰기 가능한지 확인하십시오. 그렇지 않으면 쓰기 권한을 부여하십시오.

파일 폴더에는 777 권한이 있습니다.
sebastian.roibu

에 대한 디렉토리 권한은 /sites/default/files/galerii_imagini어떻습니까?
Jimmy Ko

2
@applecrusher 이것은 매우 나쁜 조언입니다.

답변:


1

경로 sites/default/files/galerii_imagini 가 존재하고 디렉토리 인지 확실 합니까? 이 오류가 존재하지 않거나 존재하지만 디렉토리 대신 파일 인 경우이 오류를 볼 수 있습니다. Drupal이 galerii_imagini디렉토리 를 생성 할 것으로 예상되는 경우 다음을 호출하기 전에이 행을 추가해야합니다 file_copy.

file_prepare_directory("public://galerii_imagini", FILE_CREATE_DIRECTORY);

Drupal 7.x 소스 코드의 검색을 기반으로하여이 메시지 File %file could not be copied, because the destination directory %destination is not configured correctly.는로만 생성 file_unmanaged_copy됩니다 file_copy. 에 file_prepare_directory전달 된 대상에서 먼저 호출 file_copy한 다음 상위 디렉토리에서 호출합니다 . 두 호출이 모두 실패한 경우에만 오류 메시지가 표시됩니다. file_prepare_directory기본 플래그로 호출하기 때문에 다음 과 같은 경우 해당 메시지와 함께 실패 할 수 있습니다.

  • 대상 경로와 해당 상위 디렉토리가 없습니다
  • 대상 경로가 존재하지 않고 해당 상위 디렉토리가 존재하지만 디렉토리가 아닙니다.
  • 대상 경로 또는 상위 디렉토리가 존재하거나 디렉토리이고 쓰기 가능하지 않으며 쓰기 가능하도록 권한 변경이 실패했습니다.

그러나 마지막 경우에는 질문에보고 한 메시지 바로 전에 로그에 다른 메시지가 표시됩니다. 해당 메시지를보고 The file permissions could not be set on %uri.하지 않았으므로 처음 두 경우 중 하나만 올바른 것으로 가정 할 수 있습니다.


"galerii_imagini"가 존재하며 디렉토리입니다. 이 디렉토리에 이미지를 저장하는 수동 갤러리를 만들 수 있기 때문에 drupal에 의해 쓰기 가능합니다. 공유 호스팅을 사용하고 있으며 과거에 권리 문제가 있었기 때문에 권리와 관련하여 filezilla에서보고있는 내용이 올바른지 확실하지 않습니다.
sebastian.roibu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.