#php #grpc #http-status-code-500 #classnotfound
#php #grpc #http-status-code-500 #classnotfound
Вопрос:
У меня следующая проблема:
Я установил grpc и получил приведенный пример (https://grpc.io/docs/languages/php/quickstart /) для работы с PHP из терминала (Windows PowerShell), выполняющего run_greeter_client.sh файл (а также тот же файл, использующий изменения, упомянутые в ссылке, для отправки двух сообщений «Привет, мир» вместо одного). Я также добавил extension=grpc.so в файл php.ini, так что я могу даже запустить его из терминала, используя инструкцию «php greeter_client.php «. Я использую узел .greeter_server.js инструкция по запуску сервера. Вместо этого, когда я пытаюсь запустить php-файл из браузера, он показывает, что у меня ОШИБКА HTTP 500, и когда я проверил журналы, я обнаружил следующее:
PHP Fatal error: Uncaught Error: Class 'GrpcChannelCredentials' not found
in D:MAMPgrpcgrpcexamplesphpgreeter_client.php:30
Stack trace:
#0 D:MAMPgrpcgrpcexamplesphpgreeter_client.php(50):
greet('localhost:50051', 'world')
#1 {main}
thrown in D:MAMPgrpcgrpcexamplesphpgreeter_client.php on line 30
Это кажется странным, потому что, когда я запускаю его из PowerShell (terminal) с помощью команды PHP, он работает правильно и показывает 2 сообщения «Привет, мир», но из браузера появляется эта проблема (с использованием того же js-сервера узла из другого PowerShell). Есть ли у вас какие-либо идеи о том, в чем может быть проблема?
Большое вам спасибо, пожалуйста, не закрывайте проблему, если вам нужна более подробная информация о проблеме, я могу предоставить любую информацию, которую вы спросите об этом, просто оставьте комментарий.
Комментарии:
1. Можете ли вы поместить ошибки в блоки кода.
2. Отредактировано, я думаю, что теперь ошибка в блоках кода. Спасибо!
3. Я не думаю, что вы можете просто запустить PHP-код в браузере. Браузеры не могут интерпретировать или запускать .php-код.
4. Мы можем запускать файлы PHP с помощью таких инструментов, как MAMP, xampp и т. Д. Из Браузера в режиме локального хостинга. Я попытался запустить простой PHP-файл из браузера, и он действительно запускается и выдает соответствующий результат (например, test.php файл, который находится по тому же пути, что и greeter_client.php , работает правильно и печатает Hello World в браузере с помощью echo).
Ответ №1:
Я, наконец, решил проблему, всякий раз, когда я запускаю файл с терминала, для используемого им файла php.ini есть определенное местоположение, которое я уже изменил, чтобы включить расширение grpc. Хотя я ошибался в расположении файла php.ini, который используется при запуске из браузера. В случае, если вы столкнулись с подобной проблемой, вы можете обратиться к странице phpinfo в вашем браузере и найти файл php.ini в пути, указанном в поле «Загруженный файл конфигурации». Спасибо!