web-dev-qa-db-ja.com

Oauth2ログインの実装、致命的なエラー:クラス「Google_Service」が見つかりません

ウェブサイトのログインシステムをLightOpenIDからGoogleのOauth 2.0に更新しています。

Client.phpとService/Oauth2.phpが必要な場合、エラーが発生します

致命的なエラー:クラス「Google_Service」が/home/myname/repos/website_current/lib/google-api-php-client/src/Google/Service/Oauth2.phpの32行目に見つかりません

私が使用しているコード(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ファイルは、「Service.php」の1つ上のフォルダであるクラス「Google_Service」を含む他のインクルードを認識できないようです。

私のフォルダ構造は次のようになります。

lib/
... autoload.php
... functions.php
... google-api-php-client/
    ... src/
        ... Google/ (etc etc)
public_html/
... login/
    ...login.php

なぜこれが起こっているのか分かりません。インクルードパスが表示され、phpinfo()を使用してインクルードパスとして表示されます。誰かが私にいくつかの洞察を教えてもらえますか?

7
Gambles

必ず行を追加してください[〜#〜] before [〜#〜]他のGoogleの「require_once」行。

require_once 'google-api-php-client/autoload.php';

私はそれを最後に持っていました、そしてそれは私が良い10分間頭を掻いた。

18
Durandal

github の指示に従って:

require_once 'google-api-php-client/autoload.php'; // or wherever autoload.php is located

あなたの場合、上記のインクルードURLは正常に機能するはずです。

3
user2635272

2016年11月現在

require_once ... 'vendor/autoload.php';
2
mikeytown2

これを行う新しい方法(2016年初頭頃)は

require_once("Google/autoload.php");

(インクルードパスが/ path/to/google-api-php-client/srcを持つようにすでに設定されていると仮定します)

2
Scott C Wilson

このバージョンへ 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';
//.....
1
user3559499

GoogleAPI統合を使用している間

致命的なエラー:クラス 'abc'が見つかりません

上記のcomposer.jsonにあるライブラリと、実際に自動ロードされているライブラリとの間に間違いなく何かが異なる場合、エラーが発生します。

私のcomposer.jsonで同じ問題が変更されました

{"require": {"google/apiclient": "1.0.*@beta"}}

{"require": {"google/apiclient": "2.0.*"}}

次に、php composer.phar updateを実行します(.pharファイルに正しいパスを指定してください)

1
Mohit Bhasin

デュランダルが投稿したものに従った後、私はそれを試しましたが、私にとっての新しい道は:

require_once 'google-api-php-client/src/Google/autoload.php';

これを変更すると、機能しました。助けてくれてありがとう。

0
Chris Holcomb

現在は非推奨であり、サブGoogleディレクトリに移動されています。新しいデフォルトパスは次のとおりです。google-api-php-client-master\src\Google\autoload.php

0
Adnan Shabbir