После обновления protolib и protoc gRPC больше не работает
Вчера мой Ubuntu сделал обновление (из журнала) Grpc для PHP
Командная строка: aptdaemon role='role-commit-packages' sender=':1.567' Обновление: libprotoc-dev:amd64 (3.5.0-0~maarten0+artful, 3.5.0.1-0~maarten0+artful), libprotoc15:amd64 (3.5.0-0~maarten0+ хитрый, 3.5.0.1-0 ~ maarten0 + хитрый), gnome-software-plugin-snap:amd64 (3.26.1-0ubuntu2, 3.26.1-0ubuntu2.17.10.1), gnome-программное обеспечение:amd64 (3.26.1-0ubuntu2, 3.26.1-0ubuntu2.17.10.1), google-chrome-stable:amd64 (62.0.3202.94-1, 63.0.3239.84-1), protobuf-компилятор: amd64 (3.5.0-0 ~ maarten0 + artful, 3.5.0.1-0 ~ maarten0 + artful), программное обеспечение ubuntu:amd64 (3.26.1-0ubuntu2, 3.26.1-0ubuntu2.17.10.1), libprotobuf-lite15:amd64 (3.5.0-0~maarten0+artful, 3.5.0.1-0~maarten0+artful), gnome-software-plugin-flatpak:amd64 (3.26.1-0ubuntu2, 3.26.1-0ubuntu2.17.10.1), libprotobuf15:amd64 (3.5.0-0~maarten0+ хитрый, 3.5.0.1-0 ~ maarten0 + хитрый), libprotobuf-dev:amd64 (3.5.0-0~maarten0+ хитрый, 3.5.0.1-0 ~ maarten0 + хитрый), гном -software-common:amd64 (3.26.1-0ubuntu2, 3.26.1-0ubuntu2.17.10.1)
и после перезагрузки я не могу сделать какой-либо запрос Grpc, у меня действительно есть расширение =grpc.so в моем файле php.ini, и тот же код работал вчера, я также попытался обновить его в своем файле композитора, также попытался переустановить Grpc как воссоздать классы из моего файла прото. По какой-то причине это просто не будет работать.
Я всегда получаю один и тот же ответ
сообщение: "класс" Grpc\ChannelCredentials "не найден"
есть идеи как это исправить (или что пошло не так)?
РЕДАКТИРОВАТЬ: я использую докер для локального сервера - возможно ли, что две разные версии сталкиваются сейчас?
2 ответа
Это действительно странно, потому что на основе вашего журнала, только обновление protobuf с 3.5.0 до 3.5.0.1 и обновление программного обеспечения gnome. Кажется, они не сломают GRPC. Я установил эти пакеты, а затем установил grpc-1.7.0 и protobuf-3.5.0.1 с помощью команды "sudo pecl install grpc (protobuf)", но они хорошо работают.
Ошибка "Класс" Grpc \ ChannelCredentials "не найден", скорее всего, означает, что расширение grpc.so загружено неправильно. Мы должны найти, где проблема. Вы можете попробовать
- Запустите программу php с "-d extension = / path / to / grpc.so" напрямую или перезапустите php, чтобы проверить, не является ли это проблемой с php.
- запустите пример или установите grpc.so, собрав исходный код, чтобы выяснить, является ли это проблемой с gRPC.
На всякий случай, если у кого-то возникла похожая проблема Решение моей проблемы было внутри докера. По какой-то причине моя установка grpc была потеряна
Я исправил это, подключившись к docker bash и снова установив grpc с помощью
pecl установить grpc
и прочитал расширения = grpc.so в моем файле php.ini
РЕДАКТИРОВАТЬ: та же проблема происходит каждый раз, когда я меняю antyhing в docker-compose.yaml