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找到了日志。消息是:

无法复制文件.... / main_ROSE2106.JPG,因为目标目录public:// galerii_imagini没有正确配置。

我应该怎么做才能正确配置它?我已经在/ admin / config / media / file-system中将路径site / default / files设置为公共文件。还有其他设置吗?

编辑2:我为整个/ sites / default / files树设置了777。


2
函数file_copy和由它调用的函数file_unmanaged_copy在发生错误的情况下将消息写入系统日志。您是否查看了“最近的日志消息”报告?您最有可能在那找到答案...
Stanislav Agapov '16

检查您的文件目录是否可写。如果没有,则给予它写许可。

文件文件夹具有777权限。
sebastian.roibu

目录权限如何/sites/default/files/galerii_imagini
吉米·柯

2
@applecrusher这是非常糟糕的建议。

Answers:


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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.