Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Установка в режиме CLI имеет ряд проблем. #302

Closed
igk1972 opened this issue Oct 29, 2014 · 12 comments
Closed

Comments

@igk1972
Copy link
Contributor

igk1972 commented Oct 29, 2014

Опять огорчения в нахождении проблем в базовом функционале который заявлен, и по смыслу должен быть добротно оттестирован. По-сравнению, скажем, с ГД.

Итак, продолжаю делать поддержку sqlite (кстати получается). Дошел до изменения модуля инсталляции (installer). Помятую что в нем заявленно два режима работы - web и cli.
C web-инсталляцией все понятно, переходим к режиму cli.

Исходная ситуация:

  • пакетный deploy (любым средством для этого, например capistrano),
  • тестовая среда (возможно даже без apache/nginx, только на php built-in webserver),
  • web-сервер может быть вообще еще не настроен или не запущен.

Пытаюсь запустить:
php index.php install --db_driver=pdo --db_name=kodicms --site_name KodiCMS --username=admin --timezone=UTC --empty_database=1

Полученные проблемы:

  1. ErrorException [ 8 ]: Undefined index: HTTP_HOST ~ APPPATH/classes/request.php [ 20 ]
    Удивляюсь... Заглядываю в cms/modules/installer/tasks/install.php и еще больше удивляюсь что cli инсталляция на самом деле использует POST запрос к веб-серверу.
    Это мягко говоря странно....
@butschster
Copy link
Contributor

Привет, буквально недавно занимался доработкой установки через CLI, хотел бы узнать были ли эти изменения учтены и какая ветка?
https://github.com/butschster/kodicms/blob/dev/cms/modules/installer/classes/task/install.php

Драйвер mysql уже давно не является драйвером по умолчанию и через CLI требуется его ввод. По поводу Request он является internal и раньше он работал нормально и он был реально быстрой альтернативой установки, возможно придется вынести весь процесс установки из контроллера.

P.S. CLI инсталлятор был разработан исключительно для переустановки demo сайта раз в несколько часов, позже этот механизм перестал использоваться и был написан с учетом уже имеющегося инсталлятора, сейчас наверно пришло время, когда стоит переписать весь механизм установки системы.

@igk1972
Copy link
Contributor Author

igk1972 commented Oct 29, 2014

Привет!
Ветка dev текущее состояние. Второй недочет про параметры убрал в моем тексте.

Сам механизм установки еще более-менее нормальный. Кроме упоминаемого Request. На его месте должен быть вызов функций класса инсталлятора.
(сейчас пробую сделать)

Еще не хватает параметра вроде db_pdo (mysqlsqlite).
(тоже уже сделал, войдет в sqlite поддержку)

butschster added a commit that referenced this issue Oct 29, 2014
@butschster
Copy link
Contributor

В общем я сделал ветку installer и в ней вынес все в отдельный класс и поменял в CLI и контроллере все, можешь проверить, возможно есть ошибки, т.к. уже убегаю с работы, закоммитил что успел сделать

@igk1972
Copy link
Contributor Author

igk1972 commented Oct 29, 2014

Впредверии sqlite, надо что-то решать с проблемой #291
Без этого невозможна работа c sqlite (точно проверено) и может быть еще с иной системой бд.

@butschster
Copy link
Contributor

Ну как минимм в бд есть внешние ключи, это тоже будет проблемой в sqlite, т.к. целостность некоторых данных зависит от внешних ключей

@igk1972
Copy link
Contributor Author

igk1972 commented Oct 29, 2014

Ключи работают в sqlite.

Ты недопонял - я благополучно сделал работающую версию на sqlite. Как?

  • класс PDO_Sqlite
  • небольшой rewrite sql конструкций перед их выполнением в PDO::query
  • добавление параметра db_pdo при инсталляции.

Web-инстраллятор у меня отрабатывает полностью. Дело было зв CLI-инсталятором.

Ну а проблему null-byte решил пока заменой всех функций serialize/unserialize.

@igk1972
Copy link
Contributor Author

igk1972 commented Oct 29, 2014

То есть PDO_Sqlite понимает диалект sql от SQLite и от MySQL.
На это меня навел проект sqlite-integration https://wordpress.org/plugins/sqlite-integration/ для Wordpress, который прекрассно работает.
Раз уж в WP и в Kodicms нет полной абстрации от бд.

@igk1972
Copy link
Contributor Author

igk1972 commented Oct 29, 2014

Забирай исправления installer https://github.com/igk1972/kodicms/tree/installer

@igk1972
Copy link
Contributor Author

igk1972 commented Oct 29, 2014

Еще замеченно что при ошибках кода или выполнения - выводится html код в консоль.

@butschster
Copy link
Contributor

Ну в общем я сейчас на основе твоих правок заканчиваю интеграцию, но возник ряд проблем с работой sqlite, а именно несоответствие синтаксиса:

Mysql
SET FOREIGN_KEY_CHECKS = 0

SQLite
PRAGMA foreign_keys = OFF;

@igk1972
Copy link
Contributor Author

igk1972 commented Oct 29, 2014

Погоди править и интегрировать.

Ведь я не выложил основной свой код. Мне еще надо сутки или двое.

Увидишь решение.

30 октября 2014 г., 0:49 пользователь butschster [email protected]
написал:

Ну в общем я сейчас на основе твоих правок заканчиваю интеграцию, но
возник ряд проблем с работой sqlite, а именно несоответствие синтаксиса:

Mysql
SET FOREIGN_KEY_CHECKS = 0

SQLite
PRAGMA foreign_keys = OFF;


Reply to this email directly or view it on GitHub
#302 (comment).

@igk1972
Copy link
Contributor Author

igk1972 commented Oct 29, 2014

Все по sqlite будет у меня в одноименной ветке.

30 октября 2014 г., 0:49 пользователь butschster [email protected]
написал:

Ну в общем я сейчас на основе твоих правок заканчиваю интеграцию, но
возник ряд проблем с работой sqlite, а именно несоответствие синтаксиса:

Mysql
SET FOREIGN_KEY_CHECKS = 0

SQLite
PRAGMA foreign_keys = OFF;


Reply to this email directly or view it on GitHub
#302 (comment).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants