Невозможно добавить поле изображения в Drupal 7 - PullRequest
4 голосов
/ 30 января 2012

Я новичок в Drupal, и сейчас мне нужно создать узел программно.

Я могу создать простой узел. Но если я включу его в поле изображения, оно всегда будет неудачным.

$file_path = drupal_realpath('tmp/test_image.jpg');
$file = (object) array(
    'uid' => 1,
    'uri' => $file_path,
    'filemime' => file_get_mimetype($file_path),
    'status' => 1,
);
$copy = file_copy($file, 'public://sites/default/files/field/image/testing/', FILE_EXISTS_RENAME);
$node->field_image[LANGUAGE_NONE][0] = (array) $copy;

Это всегда возвращает мне ошибку: (

The specified file could not be copied, because the destination directory is not properly configured. This may be caused by a problem with file or directory permissions. More information is available in the system log.

Ответы [ 4 ]

2 голосов
/ 20 сентября 2012

У меня была такая же проблема. В моем случае проблема заключалась в том, что конфигурация носителя «Путь к общедоступной файловой системе» была задана как относительный путь sites / default / files. После этого я установил абсолютный путь от root все работало

0 голосов
/ 30 января 2012

'public://' = 'sites/default/files' (или любая другая папка, указанная в качестве папки с файлами по умолчанию) в Drupal.

Ваш код:

$copy = file_copy($file, 'public://field/image/testing');

P.S. FILE_EXISTS_RENAME идет по умолчанию, поэтому его не нужно определять.

0 голосов
/ 31 января 2012

Спасибо за ваш вклад.Я попытался установить общий путь «sites / default / files» на «testing» или любую другую папку и установить значение 644.

Это работает.: (

Вот мой обновленный код.

$file_path = drupal_realpath('test_image.jpg');
$file = (object) array(
    'uid' => 1,
    'uri' => $file_path,
    'filemime' => file_get_mimetype($file_path),
    'status' => 1,
);
$copy = file_copy($file, 'public://', FILE_EXISTS_RENAME);

Я не уверен, какие еще разрешения мне нужно было установить на сайтах и ​​в его подпапках.

0 голосов
/ 30 января 2012

Я думаю, что если вы скажете file_copy() хранить в "public:", вы не должны указывать полное имя пути.По крайней мере, в примерах, которые я видел, цель больше похожа на 'public:filename.ext'.

Как следует из приведенного выше комментария, проверьте свои журналы, чтобы быть уверенным.В дополнение к журналу ошибок веб-сервера посмотрите, отметил ли Drupal какие-либо дополнительные подробности в разделе «Отчеты».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...