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ステートメント内のコマンドからメッセージを受け取ります。

任意の助けをいただければ幸いです。

編集:スタニスラフアガポフのおかげで、私はdrupalからのログを見つけました。メッセージは次のとおりです。

ファイル.... / main_ROSE2106.JPGをコピーできませんでした。宛先ディレクトリpublic:// galerii_imaginiが正しく構成されていません。

正しく設定するにはどうすればよいですか?/ admin / config / media / file-systemで、パスsites / default / filesをパブリックファイルとして設定しました。他に設定するものはありますか?

編集#2:/ sites / default / filesツリー全体に777を設定します。


2
機能file_copyとそれによって呼び出さは機能file_unmanaged_copyのエラーがシステムログにメッセージを書き込む場合には。「最近のログメッセージ」レポートを見ましたか?ほとんどの場合、そこに答えが見つかります...
スタニスラフアガポフ2016

ファイルディレクトリが書き込み可能かどうかを確認します。そうでない場合は、書き込み権限を付与してください。

ファイルフォルダには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.そのメッセージは表示されていないため、最初の2つのケースのいずれかが正しいと推測できます。


「galerii_imagini」が存在し、それがディレクトリです。このディレクトリに画像を保存する手動ギャラリーを作成できるため、drupalによって書き込み可能です。私は共有ホスティングを利用していて、過去に権利の問題があったので、権利に関して、filezillaに表示されているものが正しいかどうかわかりません。
sebastian.roibu
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.