Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PHP Basics tutorial has multiple issues #1274

Open
ajlive opened this issue Mar 24, 2024 · 3 comments
Open

PHP Basics tutorial has multiple issues #1274

ajlive opened this issue Mar 24, 2024 · 3 comments

Comments

@ajlive
Copy link

ajlive commented Mar 24, 2024

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.

@eugeneo
Copy link
Contributor

eugeneo commented Mar 26, 2024

@stanley-cheung Please take a look

@stanley-cheung
Copy link
Contributor

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")

@ajlive
Copy link
Author

ajlive commented Apr 12, 2024

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!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants