用于 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 Data API:未捕获的异常:必须通过composer或下载完整的软件包来安装此库