J'ai le code suivant:
$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);
}
Y a-t-il un problème avec mon code? Je reçois toujours le message de la commande die dans la dernière instruction if.
Toute aide serait appréciée.
Edit: Merci à Stanislav Agapov, j'ai trouvé les journaux de drupal. Le message est:
Le fichier .... / main_ROSE2106.JPG n'a pas pu être copié, car le répertoire de destination public: // galerii_imagini n'est pas configuré correctement.
Que dois-je faire pour le configurer correctement? J'ai défini dans / admin / config / media / file-system le chemin sites / default / files en tant que fichiers publics. Y a-t-il autre chose à régler?
Edit # 2: J'ai défini 777 pour l'ensemble de l'arborescence / sites / default / files.
file_copy
et appelée par ellefile_unmanaged_copy
en cas d'erreurs écrire des messages dans le journal système. Avez-vous consulté le rapport "Messages de journal récents"? Vous y trouverez très probablement une réponse .../sites/default/files/galerii_imagini
?Réponses:
Êtes-vous certain que le chemin
sites/default/files/galerii_imagini
existe et qu'il s'agit d'un répertoire? Vous pouvez voir cette erreur si elle n'existe pas ou si elle existe mais est un fichier au lieu d'un répertoire. Si vous vous attendez à ce que Drupal crée legalerii_imagini
répertoire, vous devez ajouter cette ligne avant votre appel àfile_copy
:Basé sur une recherche du code source de Drupal 7.x, le message
File %file could not be copied, because the destination directory %destination is not configured correctly.
n'est produit que dansfile_unmanaged_copy
, qui est appelé parfile_copy
. Il appelle d'file_prepare_directory
abord la destination telle que transmise àfile_copy
, puis son répertoire parent. Il produit le message d'erreur que vous voyez uniquement si les deux appels échouent. Puisqu'il appellefile_prepare_directory
avec des indicateurs par défaut, il peut échouer avec ce message si:Dans le dernier cas, cependant, vous verriez un autre message dans le journal immédiatement avant celui que vous avez signalé dans votre question:
The file permissions could not be set on %uri.
comme vous n'avez pas signalé avoir vu ce message, je peux seulement supposer que l'un des deux premiers cas est correct.la source