Skip to content
Snippets Groups Projects
Commit f0b857f7 authored by Tim Emiola's avatar Tim Emiola
Browse files

Merge pull request #2036 from stanley-cheung/update_php_install_readme

update PHP README installation instructions
parents 85b07b1c 3fa51a35
No related branches found
No related tags found
No related merge requests found
...@@ -7,51 +7,122 @@ This directory contains source code for PHP implementation of gRPC layered on sh ...@@ -7,51 +7,122 @@ This directory contains source code for PHP implementation of gRPC layered on sh
Pre-Alpha : This gRPC PHP implementation is work-in-progress and is not expected to work yet. Pre-Alpha : This gRPC PHP implementation is work-in-progress and is not expected to work yet.
## LAYOUT
Directory structure is as generated by the PHP utility
[ext_skel](http://php.net/manual/en/internals2.buildsys.skeleton.php)
## ENVIRONMENT ## ENVIRONMENT
Install `php5` and `php5-dev`. Install `php5` and `php5-dev`.
To run the tests, additionally install `php5-readline` and `phpunit`. To run the tests, additionally install `phpunit`.
Alternatively, build and install PHP 5.5 or later from source with standard Alternatively, build and install PHP 5.5 or later from source with standard
configuration options. configuration options.
To also download and install protoc and the PHP code generator. ## Build from Homebrew
On Mac OS X, install [homebrew][]. On Linux, install [linuxbrew][]. Run the following command to
install gRPC.
```sh
$ curl -fsSL https://goo.gl/getgrpc | bash -s php
```
This will download and run the [gRPC install script][] and compile the gRPC PHP extension.
## Build from Source
Clone this repository
```
$ git clone https://github.com/grpc/grpc.git
```
Build and install the Protocol Buffers compiler (protoc)
```
$ cd grpc
$ git pull --recurse-submodules && git submodule update --init --recursive
$ cd third_party/protobuf
$ ./autogen.sh
$ ./configure
$ make
$ make check
$ sudo make install
```
Build and install the gRPC C core
```sh
$ cd grpc
$ make
$ sudo make install
```
Build the gRPC PHP extension
```bash ```sh
apt-get install -y procps $ cd grpc/src/php/ext/grpc
curl -sSL https://get.rvm.io | sudo bash -s stable --ruby $ phpize
git clone git@github.com:google/protobuf.git $ ./configure
cd protobuf $ make
./configure $ sudo make install
make
make install
git clone git@github.com:murgatroid99/Protobuf-PHP.git
cd Protobuf-PHP
rake pear:package version=1.0
pear install Protobuf-1.0.tgz
``` ```
## BUILDING In your php.ini file, add the line `extension=grpc.so` to load the extension
at PHP startup.
1. In ./ext/grpc, run the command `phpize` (distributed with PHP) Install Composer
2. Run `./ext/grpc/configure`
3. In ./ext/grpc, run `make` and `sudo make install`
4. In your php.ini file, add the line `extension=grpc.so` to load the
extension at PHP startup.
## PHPUnit ```sh
$ cd grpc/src/php
$ curl -sS https://getcomposer.org/installer | php
$ php composer.phar install
```
## Unit Tests
Run unit tests
```sh
$ cd grpc/src/php
$ ./bin/run_tests.sh
```
## Generated Code Tests
Install `protoc-gen-php`
```sh
$ cd grpc/src/php/vendor/datto/protobuf-php
$ gem install rake ronn
$ rake pear:package version=1.0
$ sudo pear install Protobuf-1.0.tgz
```
Generate client stub code
```sh
$ cd grpc/src/php
$ ./bin/generate_proto_php.sh
```
Run a local server serving the math services
- Please see [Node][] on how to run an example server
```sh
$ cd grpc/src/node
$ npm install
$ nodejs examples/math_server.js
```
Run the generated code tests
```sh
$ cd grpc/src/php
$ ./bin/run_gen_code_test.sh
```
This repo now has PHPUnit tests, which can by run by executing [homebrew]:http://brew.sh
`./bin/run_tests.sh` after building. [linuxbrew]:https://github.com/Homebrew/linuxbrew#installation
[gRPC install script]:https://raw.githubusercontent.com/grpc/homebrew-grpc/master/scripts/install
[Node]:https://github.com/grpc/grpc/tree/master/src/node/examples
There is also a generated code test (`./bin/run_gen_code_test.sh`), which tests
the stub `./tests/generated_code/math.php` against a running localhost server
serving the math service. That stub is generated from
`./tests/generated_code/math.proto`.
...@@ -30,8 +30,8 @@ ...@@ -30,8 +30,8 @@
cd $(dirname $0) cd $(dirname $0)
GRPC_TEST_HOST=localhost:50051 php -d extension_dir=../ext/grpc/modules/ \ GRPC_TEST_HOST=localhost:50051 php -d extension_dir=../ext/grpc/modules/ \
-d extension=grpc.so /usr/local/bin/phpunit -v --debug --strict \ -d extension=grpc.so `which phpunit` -v --debug --strict \
../tests/generated_code/GeneratedCodeTest.php ../tests/generated_code/GeneratedCodeTest.php
GRPC_TEST_HOST=localhost:50051 php -d extension_dir=../ext/grpc/modules/ \ GRPC_TEST_HOST=localhost:50051 php -d extension_dir=../ext/grpc/modules/ \
-d extension=grpc.so /usr/local/bin/phpunit -v --debug --strict \ -d extension=grpc.so `which phpunit` -v --debug --strict \
../tests/generated_code/GeneratedCodeWithCallbackTest.php ../tests/generated_code/GeneratedCodeWithCallbackTest.php
...@@ -4,8 +4,15 @@ ...@@ -4,8 +4,15 @@
"version": "0.5.0", "version": "0.5.0",
"homepage": "http://grpc.io", "homepage": "http://grpc.io",
"license": "BSD-3-Clause", "license": "BSD-3-Clause",
"repositories": [
{
"type": "vcs",
"url": "https://github.com/stanley-cheung/Protobuf-PHP"
}
],
"require": { "require": {
"php": ">=5.5.0", "php": ">=5.5.0",
"datto/protobuf-php": "dev-master",
"google/auth": "dev-master" "google/auth": "dev-master"
}, },
"autoload": { "autoload": {
......
...@@ -32,8 +32,6 @@ ...@@ -32,8 +32,6 @@
* *
*/ */
require_once realpath(dirname(__FILE__) . '/../../vendor/autoload.php'); require_once realpath(dirname(__FILE__) . '/../../vendor/autoload.php');
require 'DrSlump/Protobuf.php';
\DrSlump\Protobuf::autoload();
require 'math.php'; require 'math.php';
abstract class AbstractGeneratedCodeTest extends PHPUnit_Framework_TestCase { abstract class AbstractGeneratedCodeTest extends PHPUnit_Framework_TestCase {
/* These tests require that a server exporting the math service must be /* These tests require that a server exporting the math service must be
......
...@@ -32,8 +32,6 @@ ...@@ -32,8 +32,6 @@
* *
*/ */
require_once realpath(dirname(__FILE__) . '/../../vendor/autoload.php'); require_once realpath(dirname(__FILE__) . '/../../vendor/autoload.php');
require 'DrSlump/Protobuf.php';
\DrSlump\Protobuf::autoload();
require 'empty.php'; require 'empty.php';
require 'message_set.php'; require 'message_set.php';
require 'messages.php'; require 'messages.php';
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment