【问题标题】:Laravel project gcloud app deploy failedLaravel 项目 gcloud 应用部署失败
【发布时间】:2018-08-14 03:25:21
【问题描述】:

我在将我的第一个 larval 项目部署到 Google Cloud 时遇到问题。

如果我的问题很愚蠢,请给予温和的评论。我不是 php 开发人员,甚至不是 Web 开发人员。我只是想测试一下,并在这个问题上停留了超过 1 天。

我创建了一个带有小型数据库和少量 CRUD restful api 的 larval 项目。我在本地用 Postman 进行了测试,它工作正常。 所以我想上传到服务器,我选择了带有 App Engine 的 Google Cloud Storage。 我点击了这个链接 - https://cloud.google.com/community/tutorials/run-laravel-on-appengine-flexible

拨打http://MY_PROJECT_ID.appspot.com可以看到laravel主界面

我调用我的 get api 时出错,http://MY_PROJECT_ID.appspot.com/users

所以我想我需要设置数据库。我按照上面提到的链接中的说明“设置数据库会话”

之后我调用了 gcloud app deploy --project [MY_PROJECT_ID]
然后我收到以下错误:

[06-Mar-2018 03:36:44 UTC] [2018-03-06 03:36:44] production.ERROR: SQLSTATE[HY000] [2002] No such file or directory {"exception":"[object] (Doctrine\\DBAL\\Driver\\PDOException(code: 2002): SQLSTATE[HY000] [2002] No such file or directory at /app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:47, PDOException(code: 2002): SQLSTATE[HY000] [2002] No such file or directory at /app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:43)"} []
Step #1: [06-Mar-2018 03:36:44 UTC] [2018-03-06 03:36:44] production.ERROR: SQLSTATE[HY000] [2002] No such file or directory (SQL: delete from `cache`) {"exception":"[object] (Illuminate\\Database\\QueryException(code: 2002): SQLSTATE[HY000] [2002] No such file or directory (SQL: delete from `cache`) at /app/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664, Doctrine\\DBAL\\Driver\\PDOException(code: 2002): SQLSTATE[HY000] [2002] No such file or directory at /app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:47, PDOException(code: 2002): SQLSTATE[HY000] [2002] No such file or directory at /app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:43)"} []
Step #1: 
Step #1: In Connection.php line 664:
Step #1:                                                                                
Step #1:   SQLSTATE[HY000] [2002] No such file or directory (SQL: delete from `cache`)  
Step #1:                                                                                
Step #1: 
Step #1: In PDOConnection.php line 47:
Step #1:                                                     
Step #1:   SQLSTATE[HY000] [2002] No such file or directory  
Step #1:                                                     
Step #1: 
Step #1: In PDOConnection.php line 43:
Step #1:                                                     
Step #1:   SQLSTATE[HY000] [2002] No such file or directory  
Step #1:                                                     
Step #1: 
Step #1: Script php artisan cache:clear handling the post-install-cmd event returned with error code 1
Step #1: The command '/bin/sh -c /build-scripts/composer.sh' returned a non-zero code: 1
Finished Step #1
ERROR
ERROR: build step 1 "gcr.io/cloud-builders/docker@sha256:5ebcd6cbf6e0a0279e25f8a1c73ae87f7d601fbb86f29a34a82110bd81249722" failed: exit status 1

我什至不知道哪一步错了。错误日志显示错误在脚本 php artisan cache:clear 中,所以我单独调用此命令并且它运行良好。我能感觉到一些或许多事情是错误的。 我希望有人可以向我指出哪里出了问题。

【问题讨论】:

  • 谢谢@Dan Cornilescu

标签: php laravel google-app-engine google-cloud-platform


【解决方案1】:

现在我可以通过替换成功部署:

post-install-cmd": [
"chmod -R 755 bootstrap\/cache",
"php artisan cache:clear" ] 

"post-install-cmd": [
    "Illuminate\\Foundation\\ComposerScripts::postInstall",
    "php artisan optimize",
    "chmod -R 755 bootstrap\/cache" ]

在 composer.json 中

但在那之后我遇到了另一个问题。

【讨论】:

  • 我建议您打开一个新问题,提供新问题的详细信息。
  • 嗨@AnnaRudzińska,我只是想尝试自己解决。如果我不能,我将作为新问题打开。谢谢~
【解决方案2】:

我解决了这个问题,在 app.yaml 文件中将 CACHE_DRIVER 的值从“数据库”更改为“文件”。

当该值设置为“数据库”并且 gcloud 应用程序部署功能运行 php artisan cache:clear(在 composer.json 中表示为 post-install-cmd)这将执行一个查询以删除“数据库中的“缓存”表。 但在我的情况下,我想在你的情况下,我们使用缓存文件而不是数据库表。

相同的问题和相同的解决方案适用于会话将 SESSION_DRIVER 值更改为“文件”。

【讨论】:

    猜你喜欢
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    相关资源
    最近更新 更多