2014-10-24 12 views
5

Sto cercando di implementare API di login di Google tramite le istruzioni here, ma per qualche ragione, quando provo a farlo funzionare, ho sempre arrivare:Class "Google_Config" non trovato

Fatal error: Class 'Google_Config' not found in /home/.../Google/Client.php on line 76

Sono abbastanza sicuro che ho collegato correttamente a Client.php - non lo so penso che sia il è un problema nel mio stesso codice. Qualcuno sa cosa potrebbe accadere qui? Grazie!

+1

come stai voi compresi client.php? – raidenace

+0

@raidenace require_once 'Google/Client.php'; –

+1

Non si tratta di includere 'Client.php'. Dice che non riesce a trovare la classe 'Google_Config' all'interno di' Client.php'.Hai configurato correttamente il classloader (supponendo che ne hai uno)? – scriptin

risposta

4

Questo errore indica che non è stato utilizzato Composer per installare il client. Senza Compositore, nello script si dovrebbe

set_include_path(get_include_path() . PATH_SEPARATOR . dirname($_SERVER['SCRIPT_FILENAME']) . 'vendor/google-api-php-client/src'); 
require_once '/path/to/autoload.php'; 
require_once '/path/to/Client.php'; 

Senza l'autoload.php, sarà trovato nessuna classe. In Client.php il codice prima della definizione della classe tenta di caricare autoload.php. Ma hai già trovato il Client.php, dando il percorso completo ad esso. Quindi nessun caricamento di autoload.php avviene lì.

Come dici tu, il problema si è risolto quando hai reinstallato l'API. Suppongo che tu abbia usato Composer per la seconda volta.

Chiarimento: La nota sopra NON significa ignorare l'installazione del client, in base allo google documentation. Si applica per "google/apiclient": "1.0.*@beta"

+0

La cosa strana qui è che non ho usato Composer la seconda volta né attraverso ... Non so perché; il ricaricamento ha semplicemente risolto magicamente tutto. –

+0

Strano. Perché usare set_include_path()? Perché non richiedere solo il caricatore automatico $ client = new \ Google_Client(); ? – ymakux

1

Il caricatore automatico di Google non funziona per me, è a causa di una vecchia versione di PHP o di un conflitto con un autoloader in concorrenza, non so .

Ho anche provato manualmente compreso googles caricatore automatico (che dovrebbe essere esubero src/Google/Client.php già require_once s' il autoload.php:

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

Google_Config trova mai ...

ultimatly l'unica soluzione è la soluzione come descritta in https://stackoverflow.com/a/26985116/3338098 ie

set_include_path(get_include_path() . PATH_SEPARATOR . '/path/to/google-api-php-client/src'); 
require_once 'Google/Client.php' 
0

Ho combattuto con questo per un po '. Il motivo era in realtà piuttosto semplice:

Avevo ignorato in git "config.php" che ignorava questo file ed è per questo che non era nel mio ambiente di produzione.

2

Sei sicuro di aver scaricato la versione completa non solo il ramo principale da GitHub? Si dovrebbe avere/fornitori e/directory src - quindi richiedono /src/autoload.php

0

ho potuto risolvere il problema seguendo i passaggi

> cd "youfolder" 
> composer install 
0

Invece di tenere la cartella vendor nella cartella principale, tenerlo in google-api-php-client-master cartella e utilizzare la seguente riga di includere nel progetto

require_once DIR.'/google-api-php-client-master/vendor/autoload.php';

Problemi correlati