Задать вопрос
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 минут, но пытаюсь разобраться уже целый день и пока не могу решить эту проблему((
  • Вопрос задан
  • 3614 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽