gera8774: Комментарии

Главные вкладки

6 июня в 11:51

Админ самый главный, первый. Он тоже получал 403
В общем сейчас всё разрешилось. Добавила вот:
mymodule_file_download(string $uri): ?array {
if (strpos($uri, 'private:') !== 0) {
return NULL;
}

if (!\Drupal::currentUser()->hasPermission('access private files')) {
return -1;
}

$file_repository = \Drupal::service('file.repository');
$file = $file_repository->loadByUri($uri);

$headers = file_get_content_headers($file);
return $headers;
}

6 июня в 11:25

В общем проблема была в том, что помимо самого файла и прав на него, надо еще иметь права на скачивание (для приватных файлов)
https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21File%21fi...
Пока получается не очень, но уже лучше, чем было )

5 июня в 19:28

Вот например ссылка на файл, который я гружу в ноду, и по этой ссылке файл открывается
mysite.ru/system/files/2025-06/1.jpg
А вот ссылка на мой генерируемый файл
mysite.ru/system/files/my-dir/myfile74.docx
Она выдает 403

Вообще было бы здорово обойтись php://output но проблема в том, что я генерирую файл на основе шаблона. И в этом случае есть возможность только сохранять новый полноценный файл. С этим тоже долго разбиралась, и как поняла при использовании PhpOffice\PhpWord\TemplateProcessor невозможно вывести файл через php://output

5 июня в 19:02

Собственно всё как обычно. Одно получилось, но дальше всё равно не идет
Сделала вот так:
$uri = $PATH;
$data = file_get_contents($uri);
$fileRepository = \Drupal::service('file.repository');
$fileRepository->writeData($data, $uri, FileSystemInterface::EXISTS_REPLACE);

Всё отлично, друпал берет мои файлы, они появиляются в базе
Но админ снова видит 403

Решила продолжить в новой теме.
https://drupal.ru/node/146438
Тут уже далеко ушло от изначального вопроса)

5 июня в 15:44

Да, верно, папка есть и она за пределами корня. И в нее у меня прекрасно уходят файлы из полей сущностей, и они мне доступны по ссылке. И туда также автоматически генерируются файлы из самописного модуля. И мне бы хотелось иметь к ним доступный для админа url, то есть, чтобы он всё-таки обслуживался друпалом)
У меня что-то типа такого:
function mymodule_entity_presave(Drupal\Core\Entity\EntityInterface $entity) {
if ($entity->getEntityTypeId() == 'node' && $entity->getType() == 'mydocs') {
$phpWord = new \PhpOffice\PhpWord\PhpWord();

5 июня в 10:55

Теперь возник другой вопрос. Может сможете подсказать. Настроила приватную папку, всё ок. Настроила поле файл, теперь все загружаемые файлы уходят туда. Админу эти файлы доступны по ссылке, остальным нет.
Но в этой папке есть другая папка, в которую файлы грузятся не с полей, они там создаются программно. И админу ссылка на эти файлы выдает 403
Например сейчас есть папка 2025-06, в ней лежит файл, загруженный при создании материала. Он доступен по ссылке

3 июня в 19:30

а еще захожу в папку /sites/default/files/feeds и там тоже всё доступно для скачивания. Закрытые для анонимов материалы, импортируемые когда-то через csv лежат там, и их можно скачать неавторизованному пользователю. Поэтому очень хотелось бы как-то иметь возможность закрыть некоторые папки в публичной части

3 июня в 19:09

Вроде бы с этим разобрались, если с нуля делать поле, то всё уходит в приватную папку. Всё работает, просто не так смотрела.
Но вот что делать например с сайтом, где уже достаточно много контента... С полями, у которых уже есть файлы в публичной папке, но которые надо бы скрыть?

24 апреля в 18:27

Спасибо) Код взяла с интернетов, тоже обратила внимание на in_array. У меня прописано !in_array, не работало. Я уже и так и эдак. Но в общем, дело было в кэше Smile
Проверять разрешения в permissions.yml в моем случае как я понимаю не вариант. У меня же в перспективе на каждую сущность для одного пользователя могут быть разные права. Есть галочка - смотрящий, нет галочки - правящий.

23 декабря 2024 в 10:48

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

14 декабря 2024 в 1:23

Всем спасибо. Проблема решена, это я дурачок. Обновила всё, потом была необходимость восстановить бэкап. Я его восстановила, но только папку web. Соответственно в composer остались прописаны новые версии.

14 декабря 2024 в 1:16

да я не секретничаю, просто обновления требовались для 8 модулей, и это про всех них. Но спасибо, я разобралась, дело было в файле composer. А точнее в моей невнимательности)

20 ноября 2024 в 9:44

Лучше вам этот вопрос решить с хостером. Есть хостинги, где всё очень просто: делегировали домен на хост, открепили старый домен от папки, прилинковали новый. Два домена, прилинкованные к одной папке - в некоторых ситуациях крайне нехорошо, в зависимости от функционала сайта. По идее дополнительно домен нигде не надо менять на сайте. Однако, если у вас например используется мультисайтинг (разные домены, разные сайты на разных языках, но с одной базой), то в этом случае в админке указываются домены.

5 ноября 2024 в 19:26

Ошибка по идее не друпаловская. Попробуйте на том же сервере тестовое что-нибудь развернуть и вставить этот же айфрейм. Либо попробуйте зайти в админку с другого браузера. Или у себя кэши хорошо почистите. Везде какие можно. Посмотрите журнал, логи. Вообще погуглите саму ошибку вне контекста друпала.