用于 PHP 的 Google API 客户端中的 required_once 问题

Posted

技术标签:

【中文标题】用于 PHP 的 Google API 客户端中的 required_once 问题【英文标题】:required_once issue in Google API Client for PHP 【发布时间】:2014-08-09 05:13:42 【问题描述】:

我一直在尝试在我的 php 脚本文件中导入/包含文件,但不知何故它不起作用。我知道这个require_once 问题已经被问过很多次了 [1. require_once with subfolders , 2. require_once() cant find the include path, 3. Using require_once for up directory not working] 但似乎没有一个对我有用。

Blow 图片将清楚地解释我想要做的事情:

我的尝试和错误:

尝试 1

require_once(__DIR__.'GoogleClientApi/src/Google/Service/Analytics.php');
echo 'Hey1';  //Does not echo this, means something went wrong above.
require_once(__DIR__.'GoogleClientApi/src/Google/Client.php');
echo 'Hey2';

我得到的错误:

尝试 2(修复了尝试 1 的问题,但引发了另一个问题。)

所以我决定使用绝对路径:

include '/Applications/MAMP/htdocs/GoogleClientApi/src/Google/Client.php';
echo 'Hey1';
include '/Applications/MAMP/htdocs/GoogleClientApi/src/Google/Service/Analytics.php';
echo 'Hey2';

Client.php 文件中出现错误:

`Warning: require_once(/Google/Auth/AssertionCredentials.php): failed to open stream: No such file or directory in /Applications/MAMP/htdocs/GoogleClientApi/src/Google/Client.php on line 18`

`Fatal error: require_once(): Failed opening required '/Google/Auth/AssertionCredentials.php' (include_path='.:/Applications/MAMP/bin/php/php5.5.10/lib/php') in /Applications/MAMP/htdocs/GoogleClientApi/src/Google/Client.php on line 18`

Investigating upon I found Client.php (of Google APIs Client Library for PHP) has these lines which are actually present:

require_once 'Google/Auth/AssertionCredentials.php';  // <-- Can't find
require_once 'Google/Cache/File.php';   // <-- Can't find
require_once 'Google/Cache/Memcache.php';  // <-- Can't find

我不知道这里出了什么问题。修复了尝试 1 的问题,但现在错误出现在 google 自己的库中,我不知道如何克服。我假设我正在做一些我无法弄清楚的愚蠢的事情。任何帮助或建议将不胜感激。

【问题讨论】:

复制 Google 目录和所有子目录将它放在与您尝试运行的 PHP 文件相同的目录中。这可能会有所帮助daimto.com/google-oauth2-php 我会检查并发表评论。感谢您的建议。 @DaImTo :库文件似乎存在问题。 Warning: require_once(Google/Auth/OAuth2.php): failed to open stream: No such file or directory in /Applications/MAMP/htdocs/GoogleClientApi/src/Google/Auth/AssertionCredentials.php on line 18。那么 OAuth2.php 和 AssertionCredentials.php 位于 Auth 下的同一目录中,它尝试使用 AssertionCredentials.php 中的require_once "Google/Auth/OAuth2.php"; 查看错误目录 【参考方案1】:

你有没有甩过__DIR__?通常最后没有/。因此,您必须将代码更改为:

require_once(__DIR__.'/GoogleClientApi/src/Google/Service/Analytics.php');
                      ^

我刚刚查看了你的screen shot with the error message,最后没有/。

/Applications/MAMP/htdocsGoogleClientApi/src/Google/Client.php 而不是/Applications/MAMP/htdocs/GoogleClientApi/src/Google/Client.php

【讨论】:

我认为 DIR 给你/currentDuirectoryPath/ 所以我认为不需要/不需要。还是试试看 感谢投反对票的人否决了我的正确答案。【参考方案2】:

原来我必须设置包含路径以包含根目录(src 文件夹) 使用此行:

set_include_path("/Applications/MAMP/htdocs/GoogleClientApi/src/"); 

【讨论】:

【参考方案3】:

这在 Client.php 中对我有用

set_include_path(__DIR__.'/../' . PATH_SEPARATOR . get_include_path());

【讨论】:

以上是关于用于 PHP 的 Google API 客户端中的 required_once 问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在 php 中的 Google Adwords API 中设置多个 ClientCustomerId?

用于通过PHP访问Youtube的Google API密钥

升级 Google API 客户端 PHP 库

PHP Youtube Data API:未捕获的异常:必须通过composer或下载完整的软件包来安装此库

用于 PHP 的带有电子邮件和密码的 Google Analytics Core Reporting API

如何在 PHP 中访问 Google 电子表格 API?