#php #google-app-engine #google-secret-manager
# #php #google-app-engine #google-secret-manager
Вопрос:
Я новичок в Secret manager и пытаюсь отобразить секрет теста с помощью приложения php. Все, что я получаю при развертывании приложения, — это ошибка 500. Я дал свой xxxx@appspot.gserviceaccount.com учетная запись службы требуемая роль в соответствии с документацией gcp (Secret Manager Secret Accessor Администратор объекта хранения) Я также установил composer из облачной оболочки, поэтому я действительно не могу определить, что я делаю неправильно.
Это мой composer.json
{
"require-dev": {
"paragonie/random_compat": "^9.0.0"
},
"require": {
"google/cloud-secret-manager": "^1.2"
}
}
вот как выглядит мой код:
<?php
use GoogleCloudSecretManagerV1SecretManagerServiceClient;
$projectId = 'myproject';
$secretId = 'mysecret';
$versionId = '1';
$client = new SecretManagerServiceClient();
$name = $client->secretVersionName($projectId, $secretId, $versionId);
$response = $client->accessSecretVersion($name);
$payload = $response->getPayload()->getData();
printf('Plaintext: %s', $payload);
?>
Спасибо за вашу помощь…Я больше не знаю, что попробовать 🙁
Комментарии:
1. Что говорят журналы?
2. Я с трудом вижу, что не так из журналов:-( Я вижу, что ответ равен 500, но не так много, что действительно помогает…
3. Сложно отлаживать без журналов. Вы можете ознакомиться с этой статьей, чтобы найти журналы ваших приложений: cloud.google.com/appengine/docs/standard/nodejs/building-app /…
4. Большое спасибо за попытку помочь мне. Очень признателен. в журналах написано:
code
«textPayload»: «[start] 2021/01/02 12:03:59.775036 Сбой запуска программы: завершение, вызванное выходом из nginx», «insertId»: «5ff0612f000bd5d499c4496d», «resource»: { «type»: «gae_app», «labels»: { «module_id»: «по умолчанию», «version_id»: «20210102t114630», «project_id»: «myproject», «zone»: «us12» }code
5. Ну … наконец-то я считаю, что чего-то не хватает…
code
2021/01/04 11:29:42 [ошибка] 23 # 23: * 4 FastCGI отправлено в stderr: «Сообщение PHP: PHP Фатальная ошибка: ошибка без перехвата: класс ‘Google Cloud SecretManager V1 SecretManagerServiceClient’ не найден в /workspace/form.php: 11 Трассировка стека: #0 /workspace/index.php (5): require() #1 {main} добавлено /workspace/form.php в строке 11» при чтении заголовка ответа из восходящего потока клиент: 169.254.1.1, сервер: , запрос: «ПОЛУЧИТЬ /form.php HTTP / 1.1», восходящий поток: «fastcgi:// unix:/tmp/google-config/php-fpm.sock:», host: «mycompany-training-dev.uc.r.appspot.com »code
Ответ №1:
Итак, мне удалось сделать так, чтобы это сработало. Как типичный нуб, я наделал много глупостей ^^ короче говоря: сначала у меня есть (было?) плохая привычка создавать мое приложение из оболочки Google (не sdk). Я думаю, в этом нет ничего плохого (за исключением того, что это на самом деле менее удобно), но в этом случае вам нужно связать файл json, содержащий ключ доступа, с вашей переменной среды GOOGLE_APPLICATION_CREDENTIALS, чтобы он имел право запрашивать secret manager.Я не знал, как это сделать без sdk. Поэтому, как только приложение было развернуто с использованием sdk и правильно назначенного файла json, оно стало лучше. Затем у меня был autoload.php ошибка, которую мне удалось исправить, используя эту статью на французском языке: https://www.journaldunet.fr/web-tech/developpement/1441107-comment-corriger-l-erreur-require-vendor-autoload-php-failed-to-open-stream / Спасибо вам, ребята, за то, что пытались мне помочь. Я узнал одну или две интересные вещи с этой проблемой….Каждый день — школьный день ^^