PHP在localhost上运行,在Google Cloud服务器上出错

时间:2018-11-23 08:58:00

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

我有一个可以在localhost上正常运行但在云服务器上引发错误的PHP。在本地主机上,脚本会运行,并且还会从数据存储区中获取数据。

这是引起问题的那一行:

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

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

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

  

警告:   require(/ 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文件中也是必需的。 但是,即使我尝试直接访问此文件,我仍然会遇到相同的错误。

我应该以其他方式添加需求代码吗?

2 个答案:

答案 0 :(得分:1)

问题是未上传供应商文件夹。 .gcloudignore文件正在阻止它。 纠正后,此错误消失了。

感谢大家的尝试。

答案 1 :(得分:0)

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

require 'vendor/autoload.php';

还要进行完整性检查,并确保该文件确实在供应商文件夹中。