Я вже давно користуюся Drupal, наразі мій сайт досі на сімці. І я наважився його оновити і зробити це по правильному. Наслухався і начитався про Composer та Drush — хочу на віртуалці тримати копію сайту, робити з нею все що треба: оновлювати, конфігурувати, доставляти модулі. Ну а потім закидати на звичайний хостинг.
Ідея така — я роблю нову чисту інсталяцію Drupal 9, а в ній є стандартний модуль для міграції.
Отже:
1. Створив каталог ~/projectname і зайшов у нього (далі всі команди з цього каталогу).
2. В ньому виконав composer create-project drupal/recommended-project . --no-install
Шаблон drupal/recommended-project особливий тим, що в ньому файли самого Drupal ставляться у окремий каталог, який я і відправлятиму на хостинг, коли все буде готово. Опція --no-install дозволяє мені руцями залізти у composer.json і прописати ту директорію, на яку налаштовано веб-сервер.
3. Далі командую composer install і композитор все качає і розкидає по потрібних папках.
4. Додаю drush: composer require drush/drush
5. Тепер приступаю орудувати з drush: vendor/drush/drush/drush site:install <всілякі параметри>
drush каже — ні, не бачу твого сайту. Повторюю те саме із опцією --root=/var/www/html
drush знаходить там autoload.php, а ньому знаходить посилання до ~/projectname і навіщось їх конкатенує із поточною робочою директорією:
piktor@migrate:~/projectname$ vendor/bin/drush --root /var/www/html
PHP Warning: require(/var/www/html/home/piktor/projectname/vendor/autoload.php): failed to open stream: No such file or directory in /var/www/html/autoload.php on line 16
PHP Fatal error: require(): Failed opening required '/var/www/html/home/piktor/projectname/vendor/autoload.php' (include_path='/home/piktor/projectname/vendor/pear/archive_tar:/home/piktor/projectname/vendor/pear/console_getopt:/home/piktor/projectname/vendor/pear/pear-core-minimal/src:/home/piktor/projectname/vendor/pear/pear_exception:.:/usr/share/php') in /var/www/html/autoload.php on line 16
piktor@migrate:~/projectname$
Допоможіть збагнути логку drush'a. Можна, звісно, залишити стандартну піддиректорію web/ і натравити на неї веб-сервер, якщо нічого не вийде. Але чи можна щоб файли були в різних директоріях?