2017-12-13 18 views
0

Google 계산 엔진에서 gsutil 명령을 실행하려고 시도했지만 결과가 없습니다.계산 엔진에서 PHP의 exec()에서 호출했을 때 gsutil이 작동하지 않습니다.

SSH를 통해 gsutil을 실행할 때 정상적으로 작동하지만 PHP exec()에서 아무 작업도 수행되지 않습니다.

exec()에서 오류가 반환되지 않습니다.

아이디어가 있으십니까?

+0

우리 PHP는 nginx 사용자로 실행되지만 gsutil은 루트 만 변경할 수 있습니다. – ArmeniaH

답변

0

exec()은 (는) 표준 오류를 캡처하지 않기 때문에 출력이 표시되지 않습니다.

나는 또한 https://github.com/GoogleCloudPlatform/gsutil/issues/419에서 언급 한 것과 유사한 문제가 발생하고 있다고 생각합니다. BOTO_CONFIG 환경 변수를 설정하지 않으면 gsutil은이를 호출 한 사용자의 홈 디렉토리에 boto 구성 파일 (사용자의 자격 증명 포함)을 검색합니다. nginx 사용자는 일반적으로 홈 디렉토리가 없기 때문에 boto 파일을 다른 위치에 저장하고 BOTO_CONFIG에 해당 파일의 경로를 설정해야합니다. gsutil을 root으로 구성하면 해당 boto 파일은 루트 홈 디렉토리 아래에 있습니다 (Cloud SDK의 일부로 설치된 경우 ~/.boto 또는 ~/.config/gcloud/legacy_credentials/...).

+0

답장을 보내 주셔서 감사합니다. 지금 바로 시도해 보겠습니다. 한편 우리는 앱 엔진 유연한 환경에서 똑같은 작업을 시도했지만 여전히 작동하지 않았으며 사용자와 구성에 대한 액세스 권한이 없습니다. 먼저 컴퓨팅 엔진을 사용해 볼 때 뉴스로 돌아올 것입니다. – ArmeniaH

+0

gsutil이 계산 엔진에서 작업하기 시작한 후에 PATH 및 HOME을 내 보내야했습니다! 이제 앱 엔진에서 똑같이 시도해도 여전히 운이 없다. – ArmeniaH

+0

앱 엔진의 인스턴스에 SSH를 적용하면 gsutil이 있지만 코드에서 실행하면 "권한이 거부되었습니다"라는 메시지가 표시되므로 올바른 경로를 설정해야합니다. – ArmeniaH