Класс Google_Config не найден

Я пытаюсь реализовать API входа в систему Google с помощью инструкций здесь , но по какой-то причине, когда я пытаюсь запустить его, я всегда получаю:

Неустранимая ошибка: класс Google_Config не найден в /home/.../Google/Client.php в строке 76.

Я совершенно уверен, что связался с Client.php правильно — я не думаю, что это проблема в моем собственном коде. Кто-нибудь знает, что здесь может происходить? Спасибо!


person mt_xing    schedule 24.10.2014    source источник
comment
как вы включаете client.php?   -  person raidenace    schedule 24.10.2014
comment
@raidenace require_once 'Google/Client.php';   -  person mt_xing    schedule 25.10.2014
comment
Речь не идет о включении Client.php. Он говорит, что не может найти Google_Config класс внутри Client.php. Правильно ли вы настроили загрузчик классов (при условии, что он у вас есть)?   -  person scriptin    schedule 25.10.2014
comment
@raidenace Извините, нубский вопрос. Что такое загрузчик классов и как его использовать? Я нашел ссылку на это, но я не совсем уверен, как используй это.   -  person mt_xing    schedule 25.10.2014
comment
@Mt_Xing - в упрощенном виде загрузчик классов - это, по сути, волшебная функция в php, называемая __autoload()-, когда вы создаете экземпляр класса в своем скрипте, если файл определения класса не включен, эта функция вызывается как последнее средство, чтобы попытаться загрузить твой класс. Однако в вашем случае этого не требуется - я не думаю, что Google API требует автозагрузки. Можете ли вы проверить, какое у вас значение include_path в php.ini?   -  person raidenace    schedule 25.10.2014
comment
@raidenace get_include_path возвращает :/usr/lib/php:/usr/local/lib/php. Я также вручную запускаю set_include_path(get_include_path() . PATH_SEPARATOR . '../../PHPDep/Google'); в моем коде.   -  person mt_xing    schedule 26.10.2014
comment
@raidenace Неважно, я удалил всю папку google-api-php-client и повторно загрузил ее. Кажется, теперь это работает. Спасибо за вашу помощь - если вам нужна репутация, напишите ответ, и я приму его.   -  person mt_xing    schedule 26.10.2014
comment
@Mt_Xing: Я рад, что это сработало - спасибо, что предложили принять ответ от меня, но я действительно мало что сделал, чтобы помочь вам здесь, может быть, в следующий раз :) Мне все еще интересно, как просто повторная загрузка помогла, может быть, одна из тех перезагрузки / перезагрузки / перезалейте загадки информатики, которые никогда не будут разгаданы!   -  person raidenace    schedule 28.10.2014


Ответы (6)


Эта ошибка означает, что вы не использовали Composer для установки клиента. Без Composer в вашем скрипте вы должны

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';

Без autoload.php класс не будет найден. В Client.php код перед определением класса пытается загрузить autoload.php. Но вы уже нашли Client.php, указав полный путь к нему. Таким образом, загрузка autoload.php там не происходит.

Как вы говорите, ваша проблема решилась, когда вы переустановили API. Я полагаю, вы использовали Composer во второй раз.

Пояснение. Приведенное выше примечание НЕ означает пропуск правильной установки клиента, согласно google. документация. Применяется для "google/apiclient": "1.0.*@beta"

person Igor Greg    schedule 01.03.2015
comment
Странно то, что я не использовал Composer и во второй раз... Не знаю почему; перезагрузка просто волшебным образом все исправила. - person mt_xing; 15.03.2015
comment
Странный. Зачем использовать set_include_path()? Почему бы просто не потребовать автозагрузчик, тогда $client = new \Google_Client(); ? - person ymakux; 17.08.2015

Вы уверены, что загрузили весь релиз, а не только основную ветку с github? У вас должны быть каталоги /vendors и /src - тогда потребуется /src/autoload.php

person Artur Czyżewski    schedule 20.09.2016

у меня не работает автозагрузчик google, то ли из-за старой версии PHP, то ли из-за конфликта с конкурирующим автозагрузчиком, не знаю.

Я даже пытался вручную включить автозагрузчик Google (который должен быть избыточным, поскольку src/Google/Client.php уже require_once является autoload.php:

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

Google_Config так и не нашли...

в конечном итоге единственным решением является решение, описанное в https://stackoverflow.com/a/26985116/3338098, т.е.

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

Я боролся с этим некоторое время. Причина была на самом деле довольно проста:

Я проигнорировал в git «config.php», который проигнорировал этот файл, и поэтому его не было в моей производственной среде.

person Niklaus    schedule 06.10.2015

Я мог бы решить проблему, выполнив следующие шаги

> cd "youfolder"
> composer install
person Shemeer M Ali    schedule 02.11.2016

Вместо того, чтобы хранить папку поставщика в корневой папке, сохраните ее в папке google-api-php-client-master и используйте следующую строку, чтобы включить ее в свой проект.

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

person Sahil Bhatia    schedule 21.06.2017