3. Описание MCP-сервера › 3.3 Движок › PHP-файлы › engine_php_save

Сохраняет существующий PHP-файл: код и, если передан, манифест модуля.

Право

«Прямой доступ → Разработка → Изменение данных» (AGENT_ENGINE_DEV_WRITE).

Параметры

Параметр Тип Что это
path строка путь файла
[content] строка новое тело файла
[content_source] строка файл на этом компьютере — абсолютный путь или путь от папки магазина — вместо content: тело уходит байт в байт, не проходя через переписку
[manifest] объект манифест модуля с ключами, которые отдаёт engine_php_load
[build] да/нет поднять номер сборки магазина

Нужен content или content_source: сохранение без тела отказывает, иначе оно очистило бы файл.

manifest переписывает .json модуля целиком. Ключ, которого нет в объекте, получает пустое значение или ноль, поэтому манифест передают полностью — проще всего взять его из engine_php_load и поменять нужное. Список таблиц table_info движок после сохранения собирает заново по запросам модуля; остаются только снятые таблицы (log=0). В списке includes наоборот: снятые записи (=0) не сохраняются. Без manifest меняется только код, .json не трогается.

build поднимает номер сборки, который страница подвешивает к своим css и js, — тогда браузеры посетителей возьмут свежую статику. Самому модулю это не нужно: его вывод браузер не хранит.

Что ещё делает сохранение — перезаписывает файл целиком, сбрасывает кеш, пишет версию — описано в «PHP-файлы».

Ответ

{"path": "./../units/melbis_cataloge.php", "manifest": false, "build": false, "warning": ""}
Поле Что это
path путь сохранённого файла
manifest переписан ли .json
build поднят ли номер сборки
warning замечания проверки модуля одной строкой после Warning!: Undeclared — вызов функции библиотеки, которой нет в includes; Unused — библиотека подключена, но не используется; One alias only — библиотека публикует больше одного короткого имени; Alias differsuse зовёт библиотеку не тем именем, что она публикует; Namespace missing — библиотека публикует короткое имя, а пространства имён у файла нет. Пусто, если замечаний нет; корневой скрипт не проверяется

Отказы

Ответ Когда
… is not a php file of the project… путь — не php-файл проекта: модули лежат в units/, корневые скрипты — в корне сайта
No such file: … SAVE changes a file, it does not create one… файла нет на сервере — его создают engine_php_add
Say content, or content_source with a path on this machine… не указаны ни content, ни content_source
path is required не указан path

Общие отказы — «Ответы и отказы».