【问题标题】:PHP works on localhost, error on Google Cloud serverPHP在本地主机上工作,在谷歌云服务器上出错
【发布时间】:2019-04-25 20:56:39
【问题描述】:

我有一个在本地主机上运行良好但在云服务器上抛出错误的 PHP。在 localhost 上,脚本运行并从数据存储中获取数据。

这是导致问题的行:

require __DIR__ . '/../../vendor/autoload.php';
// this is the line5 of datastore.php

我使用以下代码部署它: gcloud app deploy --promote --stop-previous-version app.yaml

部署到 Google AppEngine 后,我得到了这个:

警告: 要求(/base/data/home/apps/myproject/projectID/dialpad_research/api/../../vendor/autoload.php): 无法打开流:中没有这样的文件或目录 /base/data/home/apps/myproject/projectID/dialpad_research/api/datastore.php 在第 5 行致命错误:require():需要打开失败 '/base/data/home/apps/myproject/projectID/dialpad_research/api/../../vendor/autoload.php' (include_path='.;/base/data/home/apps/myproject/projectID/;/base/alloc/tmpfs/dynamic_runtimes/php55_dynamic/ef537742f8701211/sdk') 在 /base/data/home/apps/myproject/projectID/dialpad_research/api/datastore.php 在第 5 行

这个文件在另一个 PHP 文件中也是必需的。 但是即使我尝试直接访问这个文件,我仍然会得到同样的错误。

我应该以不同的方式添加需求代码吗?

【问题讨论】:

  • 你检查过文件权限了吗?
  • 看起来你正在使用 Composer;你在部署时真的做了composer install吗?
  • 是的,我安装了 composer。我在部署之前做了作曲家安装。你的意思是作曲家安装“同时”部署?
  • 如果不知道你是如何部署的,那是不可能的;看起来文件不存在,所以在部署过程中的某个地方,您需要确保它们被添加。
  • 使用任何框架?

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


【解决方案1】:

问题是没有上传供应商文件夹。 .gcloudignore 文件阻止了它。 改正后,这个错误就消失了。

感谢大家的尝试。

【讨论】:

    【解决方案2】:

    您的要求代码应如下所示。您的供应商文件夹通常应位于代码的根目录级别,与您的 app.yaml 处于同一级别。在这种情况下,您的要求应如下所示:

    require 'vendor/autoload.php';
    

    另外,进行完整性检查并确保该文件确实存在于供应商文件夹中。

    【讨论】:

      猜你喜欢
      • 2017-08-22
      • 2013-04-28
      • 1970-01-01
      • 2016-08-04
      • 2014-01-15
      • 2020-12-07
      • 2019-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多