我正在将我的网站登录系统从LightOpenID更新为Google的Oauth 2.0。
当我需要Client.php和Service / Oauth2.php时,我收到错误
致命错误:第32行的/home/myname/repos/website_current/lib/google-api-php-client/src/Google/Service/Oauth2.php中找不到“Google_Service”类
我正在使用的代码(来自我的login.php文件)看起来像这样
require_once(dirname($_SERVER['DOCUMENT_ROOT']).'/lib/autoload.php');
require('Google/Client.php');
require('Google/Service/Oauth2.php');
echo "exit";
exit();
我在PHP.ini中添加了包含路径(在/etc/php5/apache2/php.ini中)
include_path = ".:/usr/local/lib/php:/home/myname/repos/website_current/lib/google-api-php-client/src"
所以看来我的Oauth2.php文件看不到任何其他包含的“Google_Service”类,这是“Service.php”中的一个文件夹。
我的文件夹结构如下所示:
lib/
... autoload.php
... functions.php
... google-api-php-client/
... src/
... Google/ (etc etc)
public_html/
... login/
...login.php
我不知道为什么会这样。应该看到包含路径,并使用phpinfo()显示为包含的路径;有人可以给我一些见解吗?
答案 0 :(得分:18)
确保您添加 BEFORE 任何其他Google" require_once"线。
require_once 'google-api-php-client/autoload.php';
我把它弄到了最后,它让我挠了头10分钟。
答案 1 :(得分:3)
根据github的说明:
require_once 'google-api-php-client/autoload.php'; // or wherever autoload.php is located
在你的情况下,似乎上面的包含url应该可以正常工作。
答案 2 :(得分:2)
这种做法的新方式(大约在2016年初)是
require_once("Google/autoload.php");
(假设您已经将包含路径设置为/ path / to / google-api-php-client / src)
答案 3 :(得分:2)
截至2016年11月
require_once ... 'vendor/autoload.php';
答案 4 :(得分:1)
对于此版本https://github.com/google/google-api-php-client,这是一个可行的解决方案
set_include_path("google-api-php-client/src/" . PATH_SEPARATOR . get_include_path());
//.....
require_once 'Google/Service.php';
//.....
答案 5 :(得分:1)
使用Google API集成时
当您在上面的致命错误:班级' abc'找不到
composer.json
中的库与实际上正在自动加载的库之间肯定存在某些不同之处时,会出现错误。
我的composer.json
{"require": {"google/apiclient": "1.0.*@beta"}}
到
{"require": {"google/apiclient": "2.0.*"}}
然后执行php composer.phar update
(确保为.phar
文件提供正确的路径)
答案 6 :(得分:0)
现在它已被弃用并移至Sub Google目录。以下是新的默认路径:
google-api-php-client-master\src\Google\autoload.php
答案 7 :(得分:0)
在遵循Durandal发布的内容之后,我尝试了它,但我的新路径是:
require_once 'google-api-php-client/src/Google/autoload.php';
一旦我改变它就行了。谢谢你的帮助。