Ich habe folgenden Code:
$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);
}
Stimmt etwas mit meinem Code nicht? Ich erhalte die Nachricht immer vom Befehl innerhalb der letzten if-Anweisung.
Jede Hilfe wird geschätzt.
Edit: Dank Stanislav Agapov habe ich die Protokolle von Drupal gefunden. Die Nachricht lautet:
Datei .... / main_ROSE2106.JPG konnte nicht kopiert werden, da das Zielverzeichnis public: // galerii_imagini nicht richtig konfiguriert ist.
Was soll ich tun, um es richtig zu konfigurieren? Ich habe in / admin / config / media / file-system den Pfad sites / default / files als öffentliche Dateien festgelegt. Gibt es noch etwas zu setzen?
Edit # 2: Ich habe 777 für den gesamten / sites / default / files-Baum festgelegt.
file_copy
und von ihr aufgerufene Funktionfile_unmanaged_copy
schreiben bei Fehlern Meldungen in das Systemprotokoll. Haben Sie sich den Bericht "Letzte Protokollnachrichten" angesehen? Höchstwahrscheinlich finden Sie dort eine Antwort .../sites/default/files/galerii_imagini
?Antworten:
Sind Sie sicher, dass der Pfad
sites/default/files/galerii_imagini
existiert und ein Verzeichnis ist? Sie können diesen Fehler entweder sehen, wenn er nicht vorhanden ist oder wenn er vorhanden ist, aber eine Datei anstelle eines Verzeichnisses ist. Wenn Sie erwarten, dass Drupal dasgalerii_imagini
Verzeichnis erstellt, müssen Sie diese Zeile hinzufügen, bevor Sie Folgendes aufrufenfile_copy
:Basierend auf einer Suche im Drupal 7.x-Quellcode wird die Nachricht
File %file could not be copied, because the destination directory %destination is not configured correctly.
immer nur in erzeugtfile_unmanaged_copy
, von der aufgerufen wirdfile_copy
. Es ruftfile_prepare_directory
zuerst das Ziel auffile_copy
, an das es übergeben wurde, und dann das übergeordnete Verzeichnis. Die angezeigte Fehlermeldung wird nur angezeigt, wenn beide Aufrufe fehlschlagen. Da esfile_prepare_directory
mit Standardflags aufruft , kann es mit dieser Nachricht fehlschlagen, wenn:Im letzten Fall wird jedoch unmittelbar vor der Nachricht, die Sie in Ihrer Frage
The file permissions could not be set on %uri.
gemeldet haben, eine weitere Nachricht im Protokoll angezeigt: Da Sie diese Nachricht nicht gemeldet haben, kann ich nur davon ausgehen, dass einer der ersten beiden Fälle korrekt ist.quelle