У меня есть коллега, который подключается к удаленному веб-хосту через инструмент командной строки / php, который использует CMS Drupal, который называется drush.
Drush подключается к удаленному хосту через ssh, но когда мы вводим команды, мы получаем сообщение об ошибке, когда bash пытается проанализировать определенный файл. Однако он не сообщает, в каком файле есть синтаксическая ошибка.
Begin redispatch via drush_invoke_process(). [2.01 sec, 6.87 MB] [notice]
Backend invoke: ssh -p 2222 -o "AddressFamily inet" [command]
user@myremotehost.com
'drush --debug --verbose --uri=myremotehost.com
--db-url='\''mysql://host:myremotehost.com:11297/database'\''
cache-rebuild 2>&1' 2>&1 [2.01 sec, 6.88 MB]
Calling proc_open(ssh -p 2222 -o "AddressFamily inet" user@myremotehost.com 'drush --debug --verbose --uri=mysite.com --db-url='\''mysql://host:myremotehost.com:11297/database'\'' cache-rebuild 2>&1' 2>&1);
/bin/sh: -c: line 0: unexpected EOF while looking for matching `''
/bin/sh: -c: line 1: syntax error: unexpected end of file
End redispatch via drush_invoke_process(). [5.36 sec, 6.88 MB] [notice]
Оболочка запускается нормально, и мы можем запускать типичные служебные команды GNU, поэтому не похоже, что .bashrc
или другие точечные файлы содержат ошибку.
В качестве меры по устранению неполадок мы переустановили команду drush (комбинацию сценариев оболочки и php). С его помощью мы можем запускать различные команды, кроме этой, которая подключается к удаленному хосту.
Как мы можем начать отслеживать, где возникает ошибка?
Мы используем git-bash GNU bash, версия 4.4.12 (1) -release (x86_64-pc-msys)
в Windows 7.
Правка
В выводе, который я вставил выше, я использовал некоторые подробные параметры и параметры отладки, которые я использовал для получения дополнительной информации.
Я только что повторно загрузил наш файл drush alises и повторно запустил команду без переключателей, и вот что мы получили
$ drush @mysite status
/bin/sh: -c: line 0: unexpected EOF while looking for matching `''
/bin/sh: -c: line 1: syntax error: unexpected end of file
Оказывается, из-за переменной PATH в наших окнах мы связывались с drush, отличным от предыдущей установки. Этот драш отправлял несовпадающую цитату на удаленный хост, который отправлял обратно ошибки sh
.
Мы обновили путь (после тестирования, указав полный путь к drush ), и теперь он работает.
Судя по логу, команда, отправленная по ssh, не работает. Чтобы решить вашу проблему, сначала найдите, где находится вызов ssh в drush.
В ssh передана команда
drush --debug --verbose --uri=myremotehost.com --db-url='\''mysql://host:myremotehost.com:11297/database'\'
drush ... --db-url=
'\'
'mysql://.../database'
\'
\'
то же, что и '
открывает цитату, поэтому не закрывается Справочник по Bash — лучшее место, где можно получить точное представление о