PHP Basics tutorial has multiple issues
ajlive opened this issue · comments
There are multiple issues with https://grpc.io/docs/languages/php/basics/.
Instructions to build grpc_php_plugin
appear to be outdated.
This section produces an error:
$ cd grpc $ mkdir -p cmake/build $ pushd cmake/build $ cmake ../.. $ make protoc grpc_php_plugin $ popd
Then change to route guide directory and compile the example’s .proto files:
$ cd examples/php/route_guide $ ./route_guide_proto_gen.sh
The script errors:
./route_guide_proto_gen.sh: line 25: bazel-bin/external/com_google_protobuf/protoc: No such file or directory
Instead, the instructions should say to use bazel as in grpc/grpc#25350 (comment):
./tools/bazel build @com_google_protobuf//:protoc
./tools/bazel build src/compiler:grpc_php_plugin
The node server has moved
This section produces an error:
To try the sample app, we need a gRPC server running locally. Let’s compile and run, for example, the Node.js server in this repository:
$ cd ../../node $ npm install
nmp install
errors:
$ npm install
npm ERR! Cannot use 'in' operator to search for 'bundleDependencies' in These examples have been moved to https://github.com/grpc/grpc-node/tree/master/examples
This is because the package.json is just a string:
$ cat package.json
"These examples have been moved to https://github.com/grpc/grpc-node/tree/master/examples"
I'd suggest simply linking to https://github.com/grpc/grpc-node/tree/master/examples/routeguide but there are no instructions there for running the route guide example. So perhaps it would be better to give people specific instructions to run the node server inside the php examples directory:
$ git clone https://github.com/grpc/grpc-node.git
$ cd grpc-node/
$ npm install
$ cd dynamic_codegen/
$ node ./route_guide_server.js --db_path=route_guide_db.json
Note that the current instructions have the node
command incorrectly written as nodejs
:
$ nodejs ./route_guide_server.js --db_path=route_guide_db.json
fish: Unknown command: nodejs
Client script fails
$ ./run_route_guide_client.sh
eventually hits this error:
Running RecordRoute...
PHP Fatal error: Uncaught TypeError: count(): Argument #1 ($value) must be of type Countable|array, string given in grpc/examples/php/route_guide/route_guide_client.php:115
Stack trace:
#0 grpc/examples/php/route_guide/route_guide_client.php(203): runRecordRoute()
#1 grpc/examples/php/route_guide/route_guide_client.php(212): main()
#2 {main}
thrown in grpc/examples/php/route_guide/route_guide_client.php on line 115
This is because:
$ cat ../../node/static_codegen/route_guide/route_guide_db.json
"These examples have been moved to https://github.com/grpc/grpc-node/tree/master/examples"
Pointing run_route_guide_client.sh
to ./grpc-node/examples/routeguide/static_codegen/route_guide_db.json
fixes the issue.
Fix
I'd be happy to make a PR to fix these instructions if there's agreement that cloning grpc-node
into the examples/php/route_guide
directory makes sense.
@stanley-cheung Please take a look
Thanks for logging this issue. Yea the php example is outdated.
On the suggestion, I think we should just link to the grpc/grpc-node repo instead of copying any code. (i.e. update the instruction to say "use grpc/grpc-node in this way")
I think we should just link to the grpc/grpc-node repo instead of copying any code. (i.e. update the instruction to say "use grpc/grpc-node in this way")
Yeah, this sounds better. I'll make a PR for these changes next week to get the ball rolling!