Drupal Проблема при загрузке файлов php7 Beget [Для себя]
Столкнулся с очень странно хреновиной, после обновлени версии php до php7 на хостинге Beget.com (на других тоже такое случалось) перестают загружаться файлы на сервер. Выдаёт ошибку "Файл не может быть загружен" В журнале всё так же "подробно" — "Директория загрузки public://field/image для поля файла field_image не может быть создано или недоступно. Поэтому недавно загруженные файлы не могут быть сохранены в этой директории, и загрузка отменена."В общем мать всея подробности и очевидности!
Методом тыка удалось выявить такое решение:
Обновляем Drupal до последней версии
Убеждаемся что в /sites/defaul/files/ есть файл .htaccess если нет, закачиваем его туда из оригинального дистрибутива Drupal
Далее рекурсивно применяем права 766 к /sites/defaul/files/ и всем вложенным файлам
Тут (file system) ваш-домен.ру/admin/config/media/file-system должно быть так: первая строка - sites/default/files вторая - пусто. третья строка внимание актуально только для хостинга Beget /home/u/username/ваш-домен.ру/public_html/tmp/ (ниже расскажу алгоритм для других хостингов)
Третья строка очень индивидуальна и необходимо подстроить её под ваши параметры:
/home/ - актуально для васех
/u/ - Всегда первая буква вашего юзера от beget не от друпала!
/username/ - ваш логин от beget не от юзера
/ваш-домен.ру/ - папка в которой лежит ваш сайт, не всегда соответствует домену, смотрите FTP
Если у вас не Beget:
На других хостингах мне тоже доводилось ловить такой глюк, разница только в том, что нужно узнать ваш частный случай, рассположения папки tmp для временных файлов относительно корневой папки сервера. Что бы узнать рассположение, создайте в корневой папке любой php файл, например pathinfo.php и скопируйте в него данный код:
$serinfo = $_SERVER['DOCUMENT_ROOT']; print $serinfo;
Затем откройте данный файл в браузере ваш_сайт.ру/pathinfo.php и там будет абсолютный путь на сервере который вам и нужно указать друпалу. Не забудте добавить /tmp/ в конце.