Я использую Laravel с gcloud для создания веб-сайта (App Engine) и базы данных (SQL), но по какой-то причине я не могу заставить App Engine подключиться к базе данных.
ОшибкаЯ получаю "SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from
пользователей )"
из собственной отладки laravel и "Failed to load resource: the server responded with a status of 500 ()"
из окна проверки браузера.
Это прекрасно работает, если я запускаю локальный экземпляр, так как я позволил своему IP получить доступбаза данных SQL.Я также могу просматривать данные с помощью MySQL Workbench.
Я использовал в следующем руководстве .Существует также один для стандартной среды, но я даже не дошел до этого.Использование Laravel 5.5 работало немного лучше.
Другие вещи, которые я пробовал, включают подключение App Engine, как будто это внешнее приложение, которое не находится в том же проекте, что и база данных.https://cloud.google.com/sql/docs/mysql/connect-app-engine, который также включает предоставление ролей учетным записям служб: https://cloud.google.com/iam/docs/granting-roles-to-service-accounts
Я также выполнил следующие действия:
- Перейдите к учетным записям служб IAM и администраторастр.
- Выберите проект, в котором установлено приложение App Engine.
- Найдите учетную запись службы App Engine по умолчанию и скопируйте адрес электронной почты под ней (xxxx@appspot.gserviceaccount.com).
- Используя верхнее левое меню проекта, вернитесь в проект, который содержит этот экземпляр SQL (имя-проекта).
- Перейдите на страницу IAM и admin IAM.
Нажмите кнопку Добавить, введите адрес электронной почты в качестве участника и выберите Cloud SQL Client в качестве роли.Затем нажмите Add.
- App.yaml выглядит следующим образом:
env: flex
runtime_config:
document_root: public
# Ensure we skip ".env", which is only for local development
skip_files:
- .env
env_variables:
# Put production environment variables here.
APP_LOG: errorlog
APP_KEY: app-key
## Set these environment variables according to your CloudSQL configuration.
DB_CONNECTION: mysql
DB_HOST: sql-ip
DB_PORT: 3306
DB_DATABASE: database-name
DB_USERNAME: db-username
DB_PASSWORD: pass
DB_SOCKET: /cloudsql/instance-connection:name
beta_settings:
cloud_sql_instances: instance-connection:name```
- Я также использую следующее в composer.json дляразрешить доступ к файлам и кешам755 работает аналогично и должен быть окончательным.
"chmod -R 777 bootstrap\/cache",
"chmod -R 777 storage",
"php artisan config:cache"
]
Стоит также отметить, что в файле конфигурации начальной загрузки были ошибки, из-за которых он указывал на локальные файлы на моем компьютере, а не на загруженные файлы.
Если вам нужна дополнительная информация, спросите.
Спасибо.