Как я могу составить пакет на сервере, который я установил на моем локальном компьютере? - PullRequest
0 голосов
/ 29 ноября 2018

Через терминал я установил плагин Ramsey / Uuid:

composer require ramsey/uuid

В моем PagesRepository.php я создаю эту функцию:

use Ramsey\Uuid\Uuid;

  function generateUid()
  {
     $uuid = Uuid::uuid4();
     $uuid = $uuid->getHex();
     $uuid =  substr($uuid,0,10);

     return   $uuid;
  }

Я использую функцию в моем PagesController.php

  $unique_id = PagesRepository::generateUid();
  $entity->setUnique_id($unique_id);

Очень хорошо работает на моей локальной машине, но затем я отправляю его через git на свой сервер, и там я получаю сообщение об ошибке:

Попытказагрузить класс "Uuid" из пространства имен "Ramsey \ Uuid".Вы забыли оператор "use" для "Symfony \ Component \ Validator \ Constraints \ Uuid"?

Я не могу ничего установить на сервер, потому что это общий хост, и в разрешении отказано, поэтому яскопировал папку ramsey в папку моего поставщика на сервере.Но это не решило проблему.

Я не понимаю, почему запрашивается валидатор Symfony, так как он не нужен на локальной машине.

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Если вы не используете composer install на своем сервере, вам необходимо скопировать всю папку vendor, по крайней мере, туда, где вы работаете в системе.

Возможно, установленный вами пакетнапример, установлены другие зависимости, но вы не копируете их при передаче только файлов для этого пакета.И как минимум вам понадобятся сгенерированные файлы автозагрузчика.

Поскольку вы создаете установку на dev и переносите ее в производство, я бы посоветовал удалить вашу локальную папку vendor и заново выполнить всю установкусначала:

composer install --prefer-dist --no-dev --no-scripts --no-progress --no-suggest --classmap-authoritative --no-interaction

и передача этой папки поставщика в производство.Вы должны убедиться, что процесс установки не включает никаких других шагов (включение пакетов, создание файлов конфигурации и т. Д.), Но я надеюсь, что вы позаботились об этом в какой-то момент.

После того, как вы это сделаетеВы можете сбросить предыдущие шаги и сделать обычный composer install для разработки.

0 голосов
/ 29 ноября 2018

Это из-за composer автоматически сгенерированных файлов, не связывающих вашу папку или класс (ramsey).

Итак, насколько я понимаю, вы не можете запустить composer update или composer install на виртуальном хостинге, вы должны загрузить полностью обновленную папку vendor на свой сервер.

Тогда автоматически сгенерированные файлы, такие как vendor\composer\autoload_psr4.php, будут обновлены и будут иметь ссылку на класс, такой как Ramsey\Uuid\Uuid.

Точка равна

Пространство имен PHP не может включать класс/ файл автоматически.Он загружает классы с автоматически сгенерированными файлами компоновки и функцией __auload magic.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...