13 минут назад
Если суть поста: стоит или не стоит, то тут всё зависит от тебя. Хочешь копаться, разбираться — стоит. А иначе можешь и откатиться, но не факт что всё...
Обновил Minishop2 с 2.5.0-pl до 4.4.0-pl., заказы не приходят на почту 2
16 ноября 2024, 21:12
Спасибо. Работает.
Не процессится значение TV в шаблоне pdoPage при передаче его в сниппет кастомный. 2
16 ноября 2024, 20:54
Владимир, добрый день!
Есть возможность добавить в модуль функцию отмены заказа?
Т.е. если в админке магазине поставили статус Отменен, чтобы в Ти...
[mspTinkoff] 1.0.2 — Новое API + ККТ 54
15 ноября 2024, 17:40
спасибо, несколько раз проверял и не заметил)
pdoResources не выводит ресурсы с указанным шаблоном 2
14 ноября 2024, 13:55
Сложна.
Я сделал с помощью js. Задал class для div c results
и вот так прописал
document.querySelector('.easycomm div').textContent = 'Отзывов пок...
Как правильно задать свой блок "Ничего не найдено" в mFilter2 7
14 ноября 2024, 11:50
Добрый день! Установил MarkdownEditorFrontend с modstore и xpdo выдало ошибку что не может найти сервис. К моему удивлению в транспортном пакете не на...
Markdown - редактирования текст в формате markdown 11
14 ноября 2024, 05:22
astro.build впервые слышу такой фреймворк. Вообще gtsAPI затачивался под primevue.org. Но в primevue вообще не никакой связи с api. Там api как хочешь...
gtsAPI - Универсальное API для MODX 4
13 ноября 2024, 10:55
Не все пожелания клиента нужно реализовывать. Одно дело когда желание обосновано бизнес-процессами, а другое дело клиент так видит. В данном случае, н...
Как правильно сделать авторизацию двух разных групп пользователей. 5
13 ноября 2024, 10:28
Файл: core/components/msearch2/phpmorphy/src/fsa/access/fsa_sparse_file.php
Перед строкой 32 добавить:
if(!is_array($word)) {
$word = (a...
mSearch2 приводит к заполнению журнала ошибок (mSearch2 fills error log) 1
12 ноября 2024, 19:52
С ним славу богу все хорошо. Он пошел дальше по карьерной лестнице, оставил MODX позади и сейчас заглядывает к нам только поздороваться.
Не могу справиться с fullCalendar"ем 7
Всего 123 793 комментария
На linux два вариант работы)))
— Либо работаешь под root
— Либо настраиваешь www-data пользователя и под ним работаешь
лучше под root, контейнеры всякие разные бывают, каждый под себя хрен настроишь. А с правами бороться это проблема жесткая
@Александр Мельник думаю что папка modx не под root, это на хост машина так файлы и папки выглядит))) Они на самом деле под пользователем id которого, отсутствует на хост-машине
нужно зайти в контейнер с php-fpm и посмотреть id пользователя внутри контенер, и создать такого же пользователя у себя
Еще вариант
Как еще можно указать под каким пользователем будет работать контейнер
github.com/webnitros/facade-app/blob/bcc07c7a823afb70d129fd246471472a698b2ebf/docker-compose.yml#L22
Но опять же это не поможет сильно)) Есть nginx, который все равно будет под www-data создавать файлы)))
В общем беда на linux по работе с docker)))
Я в своё время его спросил, нафига добавлять контейнер Pimple, разработка и поддержка которого прекращена? Почему не взять развивающийся и более навороченный PHP-DI? Насколько я помню, он ответил какую-то чушь в стиле — зато легкая, а нам больше и не нужно. Даже Марк тогда присоединился к моему вопросу. Но Джейсон сказал, что переделывать он ничего не будет. Это было ещё до выпуска релиза MODX3, когда можно было хорошо почистить легаси.
github.com/modxcms/revolution/pull/16569
Дальше уже можно будет чем то другим обвешивать
В логах по классике пусто, все страницы выбивают 404, локейшн вроде как прописал верно в NGINX, во всяком случае с isp это работало
А вот вызов fenom, через чур усложнен, по этому хотя бы через Facade стоит прокинуть, как и многие другие сервисы.
Собственно Facade не требует ни какой дополнительно зависимости, mmxFenom уже устанавливает illuminate support где есть Facade
Ни какого прогресса не будет
Первое.
в Dockerfile которые используется при создании образа для php-fpm добоавить строки,
Здесь мы задаем пароль root для пользователя root, а затем создаем пользователя с именем и группой user (можно любое). ОТ имени этого пользователя будут выполнятся все команды по умолчанию в контейнере, который будет запущен на основании этого образа. Это видно на скрине, что пользователь в контейнере user.
Но остается возможность, поскольку мы задади пароль для пользователя root переключиться и на него. Теперь когда будет выполнять код из вашего скрипта run-install файлы modx будут созданы уже не рутовым пользователем и смогут редактироваться снаружи.
Второе. Но есть еще проблема. В репозитории на гитхабе у вас изначально отсутствует директория modx, но она используется в docker-compose файле. Изза этого происходит следующее, при запуске docker compose up --build докер ищет директорию modx, не находит и создает ее. Но здесь очень важно, а где он ее создает. Так вот docker в таком случае создает диреторию modx ВНУТРИ контейнера и только потом прокидывает ее наружу. В таком случае директорию modx получается созданной пользователем root. Добавлю скриншот.
И получается, что наш пользователь user, который запустит команду установки modx не сможет ничего записать в директорию modx, которую он видит внутри своего контейнера. Но эту проблему легко решить, зная как именно работают неименованные volume в докере. Нужно чтобы пустая директория modx существовала в проекте перед тем, как будет выполнена команда docker compose up, в этом случае докер возьмет ее и примонтирует внутрь каждого контейнера и она (директория) не будет создана рутом. Наверное можно просто создать пустую диркторию, но я знаю что гит не позволяет помещать пустую директорию в отсеживаемую область, для чего используют пустой файл .gitkeep. Если modx умеет устанавливаться в НЕ пустую директорию то это будет решением. Если же не умеет (а скорее всего файл .gitkeep не позволит выполнить команду create project у composer) то директорию можно создавать во время выполнения run-rename, главное чтобы до запуска docker compose.
Все что написал, предварительно проерил и да, теперь у меня есть возможность редактировать код в директории modx и заработал админка. Не знаю по этой ли причине или нет, но это единственный вариант когда у меня открылась админка сайта на 8080 порту.
Так же напомню, что вам нужно еще подправить run-rename чтобы он делал копию env файла и переименовывал проект.
Обратил внимание, что при переименовнии проекта скриптом, нельзя использовать цифры. Причем сам скрипт об этом не предупредил и когда я в качестве имени указал alex-test2 то переименование произошло со сбоем. Что то стало называется alex-test2, а что то alex-test.
github.com/modxcms/revolution/commits/3.x/core/src/Revolution/Services/Container.php
Её и использовал для подключение Facade в 3 версии modx
github.com/webnitros/facade-app/blob/2fe0344f87806bead554ba8f91e1d3d1ad62bb7f/Extras/FacadeApp/core/components/FacadeApp/elements/plugins/FacadeApp.php#L47C52-L47C53
Проблема в другом
это сам класс не позволяет делать, его нужно затачивать под такой вызов чтобы он инстанс вызывал который уже например инциализирован, чтобы постоянной инициализации класса занова небыло
Другой вариант контенеризации это сделать app() какой то, который будет обращаться к контенерам как будто
$modx->services->get('mmxFenom')
@Сергей Шлоков уже довольно давно, предлагал изменить getInstance,
и тогда можно обращаться вот так:
Кстати, где возможно, в свои проекты внедрил эту практику, работает отлично, без контейнеризации. Я не оценивал последствия, если это сделать стандартной сборке MODX 3 или 2, может там будут проблемы с процессорами. Но эта практика modX::getInstance('modX'), как и с Facade, упрощает написание кода.
Тогда можно будет сделать вот так
А я использую в production образы и хост одной и той же системы — Ubuntu (Debian), поэтому всё работает от одного юзера www-data. А на локальной MacOS проблемы с правами и вовсе нет.
Скорее всего, MODX просто не может создать директорию с кэшем из-за прав, да.
Спасибо на добром слове, планирую продолжать!
Это какой-то known bug? Есть шанс что починишь или мне искать обходной путь?
В доке не нашел подробностей, как будто бы должно работать сразу из коробки.
MODX 2.8.6
pageblocks-1.0.0-pl
А судя по вашему коду, сервисы все еще из $modx достаются? Печально.
Честно говоря, тоже не люблю фасады и не пользуюсь ими и в ларавель. Выглядит как сотый уровень абстракции над абстракцией, без которой вполне можно обойтись. Лучшее враг хорошего, хотя это лично мое мнение.
Стало интересно, как вы решаете те проблемы, с которыми я сталкиваюсь при работе с докером и к сожалению сразу же споткнулся об эти же грабли.
Инсталирую mmx-app как вы указываете в видео. И при таком подходе весь код из директории modx недоступен для редактирования из хостовой машины. Проблема очевидная, ожидаемая и связанная с тем что инсталяция modx происходит внутри контейнера а там пользователь root. И соответственно все файлы которые мы видим в volume тоже может редактировать только root.
Незнаю, может это не стоит считать проблемой, и вы и не планировали, что файлы в директории modx нуждаются в редактировании, но все же…
Я для себя решил эту проблему тем, что описывая докерфайл создаю там сразу нерутового пользователя и запускаю контнейнер от его имени. В таком случае файлы, созданные от имени этого пользователя монтируются «наружу» с именем пользователя на хостовой системе, что очень удобно.
Ну а кстати, зачем я вообще полез править файлы в modx. Админка тупо выдает белый экран. Главная страница сайта открывается, а никакие танцы с бубнами вокруг админки пока не помогли.