sh 구문 오류 추적

sh 구문 오류 추적

CMS Drupal에서 사용하는 drush라는 PHP/명령줄 도구를 통해 원격 웹 호스트에 연결하는 동료가 있습니다.

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]
[email protected]
'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" [email protected] '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 스크립트의 조합)을 다시 설치했습니다. 이를 사용하여 원격 호스트에 연결하는 명령을 제외한 다양한 명령을 실행할 수 있습니다.

오류가 발생한 위치 추적을 어떻게 시작합니까?

GNU bash, version 4.4.12(1)-release (x86_64-pc-msys)Windows 7에서는 git-bash를 사용합니다.

편집하다

위에 붙여넣은 출력에서 ​​자세한 정보를 얻기 위해 몇 가지 자세한 디버그 스위치를 사용했습니다.

방금 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

답변1

로그에 따르면 SSH를 통해 전송된 명령이 손상되었습니다. 문제를 해결하려면 먼저 drush에서 ssh 호출 위치를 찾으세요.

SSH에 전달된 명령은 다음과 같습니다.

    drush  --debug --verbose --uri=myremotehost.com --db-url='\''mysql://host:myremotehost.com:11297/database'\'
  1. 그것은로 분해된다drush ... --db-url= '\' 'mysql://.../database' \'
  2. 후자는 제안을 개시하는 것과 동일하므로 \'종료되지 않습니다.'

Bash Reference는 Bash가 무엇인지 정확하게 배울 수 있는 최고의 장소입니다.

답변2

Windows의 PATH 변수로 인해 이전 설치와 다른 drush에 연결되어 있었던 것으로 나타났습니다. Drush는 원격 호스트에 일치하지 않는 따옴표를 보내고 있으며 원격 호스트는 오류를 다시 보내고 있습니다 sh.

경로를 업데이트했고(drush의 전체 경로를 테스트한 후) 이제 작동합니다.

관련 정보