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 минут, но пытаюсь разобраться уже целый день и пока не могу решить эту проблему((
  • Вопрос задан
  • 2825 просмотров
Решения вопроса 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.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы