robert_n
@robert_n

Библиотека Google Api Client for PHP и Composer?

Здравствуйте!
Возникла проблема с добавлением библиотеки Google Api Client for PHP с помощью Composer. Прошу Вашей помощи!
До этого с Composer не сталкивался, и только сегодня его установил, следуя этой инструкции. Composer запускается, тестировал с помощью команды:
$ composer

Далее я добавил библиотеку гугла:
composer require google/apiclient:^2.0.0@RC
Библиотека подтянулась, вот содержание composer.json
{
    "require": {
        "google/apiclient": "^2.0.0@RC"
    }
}


Структура папок и файлов получилась следующая:
─root
  ├─.composer(папка)
  ├─composer.lock
  ├─composer.json
  └─vendor(папка)
    ├─autoload.php
    ├─composer(папка)
    └─google(папка)
      └─...
─var
  ├─www(папка)
    └─html(папка)
      └─index.php


В файл index.php добавил следующий код:
require_once 'vendor/autoload.php';

$client = new Google_Client();
$client->setApplicationName("Client_Library_Examples");
$client->setDeveloperKey("YOUR_APP_KEY");

$service = new Google_Service_Books($client);
$optParams = array('filter' => 'free-ebooks');
$results = $service->volumes->listVolumes('Henry David Thoreau', $optParams);

foreach ($results as $item) {
  echo $item['volumeInfo']['title'], "<br /> \n";
}


При загрузке index.php сервер выдает 'Error 500'. В логах написано:
PHP Warning:  require_once(vendor/autoload.php): failed to open stream: No such file or directory in 
/var/www/html/index.php on line 3

PHP Fatal error:  require_once(): Failed opening required 'vendor/autoload.php' 
(include_path='.:/usr/share/php:/usr/share/pear') in /var/www/html/index.php on line 3

Скажите пожалуйста что я сделал не так? Может быть Composer надо было установить в папку html? Или файл autoload.php переместить? Думал что настройка займет 10-15 минут, но пытаюсь разобраться уже целый день и пока не могу решить эту проблему((
  • Вопрос задан
  • 3459 просмотров
Решения вопроса 2
@Wol_fi
php, js, mysql, highload
require_once 'vendor/autoload.php';
Так бы сработало, если бы у вас index.php лежал в root.
попробуйте
require_once '../../../../root/vendor/autoload.php';
Ответ написан
Вам же написано:
No such file or directory.

Т.е. отсутствует файл autoload.php по тому пути, который вы прописали. Вам надо генерировать composer.json в корне вашего проекта. В вашем случае в консоле пропишите команду:
/var/www/html
composer require google/apiclient:^2.0.0@RC

В каталоге "html" у вас должна создаться папка composer и 2 файла (composer.lock и composer.json). После этого все должно заработать. Самое главное, чтобы 2 файла(composer.lock и composer.json) лежали в одной папке с вашим файлом index.php.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
zoonman
@zoonman
⋆⋆⋆⋆⋆
Я могу вам порекомендовать делать структуру проекта в стиле

public/index.php  - основной файл
src/ - здесь весь ваш код
composer.json - композер, при запуске обновления сам создаст папку вендор


Вам прийдется переконфигурировать сервер, чтобы он отдавал файлы из public.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы