Index: third_party/grpc/src/php/README.md |
diff --git a/third_party/grpc/src/php/README.md b/third_party/grpc/src/php/README.md |
new file mode 100644 |
index 0000000000000000000000000000000000000000..cf8f2c11b0fa5e1aca376ffd6f7212e94ce41095 |
--- /dev/null |
+++ b/third_party/grpc/src/php/README.md |
@@ -0,0 +1,320 @@ |
+ |
+#Overview |
+ |
+This directory contains source code for PHP implementation of gRPC layered on shared C library. |
+ |
+#Status |
+ |
+Beta |
+ |
+## Environment |
+ |
+Prerequisite: `php` >=5.5, `phpize`, `pecl`, `phpunit` |
+ |
+**Linux (Debian):** |
+ |
+```sh |
+$ sudo apt-get install php5 php5-dev php-pear |
+``` |
+ |
+**Linux (CentOS):** |
+ |
+```sh |
+$ yum install php55w |
+$ yum --enablerepo=remi,remi-php55 install php-devel php-pear |
+``` |
+ |
+**Mac OS X:** |
+ |
+```sh |
+$ curl -O http://pear.php.net/go-pear.phar |
+$ sudo php -d detect_unicode=0 go-pear.phar |
+``` |
+ |
+**PHPUnit:** |
+```sh |
+$ wget https://phar.phpunit.de/phpunit-old.phar |
+$ chmod +x phpunit-old.phar |
+$ sudo mv phpunit-old.phar /usr/bin/phpunit |
+``` |
+ |
+## Quick Install |
+ |
+Install the gRPC PHP extension |
+ |
+```sh |
+sudo pecl install grpc-beta |
+``` |
+ |
+This will compile and install the gRPC PHP extension into the standard PHP extension directory. You should be able to run the [unit tests](#unit-tests), with the PHP extension installed. |
+ |
+To run tests with generated stub code from `.proto` files, you will also need the `composer`, `protoc` and `protoc-gen-php` binaries. You can find out how to get these [below](#generated-code-tests). |
+ |
+## Build from Source |
+ |
+ |
+### gRPC C core library |
+ |
+Clone this repository |
+ |
+```sh |
+$ git clone https://github.com/grpc/grpc.git |
+``` |
+ |
+Build and install the gRPC C core library |
+ |
+```sh |
+$ cd grpc |
+$ git pull --recurse-submodules && git submodule update --init --recursive |
+$ make |
+$ sudo make install |
+``` |
+ |
+### gRPC PHP extension |
+ |
+Install the gRPC PHP extension from PECL |
+ |
+```sh |
+$ sudo pecl install grpc-beta |
+``` |
+ |
+Or, compile from source |
+ |
+```sh |
+$ cd grpc/src/php/ext/grpc |
+$ phpize |
+$ ./configure |
+$ make |
+$ sudo make install |
+``` |
+ |
+### Update php.ini |
+ |
+Add this line to your `php.ini` file, e.g. `/etc/php5/cli/php.ini` |
+ |
+```sh |
+extension=grpc.so |
+``` |
+ |
+## Unit Tests |
+ |
+You will need the source code to run tests |
+ |
+```sh |
+$ git clone https://github.com/grpc/grpc.git |
+$ cd grpc |
+$ git pull --recurse-submodules && git submodule update --init --recursive |
+``` |
+ |
+Run unit tests |
+ |
+```sh |
+$ cd grpc/src/php |
+$ ./bin/run_tests.sh |
+``` |
+ |
+## Generated Code Tests |
+ |
+This section specifies the prerequisites for running the generated code tests, as well as how to run the tests themselves. |
+ |
+### Composer |
+ |
+If you don't have it already, install `composer` to pull in some runtime dependencies based on the `composer.json` file. |
+ |
+```sh |
+$ curl -sS https://getcomposer.org/installer | php |
+$ sudo mv composer.phar /usr/local/bin/composer |
+ |
+$ cd grpc/src/php |
+$ composer install |
+``` |
+ |
+### Protobuf compiler |
+ |
+Again if you don't have it already, you need to install the protobuf compiler `protoc`, version 3.0.0+. |
+ |
+If you compiled the gRPC C core library from source above, the `protoc` binary should have been installed as well. If it hasn't been installed, you can run the following commands to install it. |
+ |
+```sh |
+$ cd grpc/third_party/protobuf |
+$ sudo make install # 'make' should have been run by core grpc |
+``` |
+ |
+Alternatively, you can download `protoc` binaries from [the protocol buffers Github repository](https://github.com/google/protobuf/releases). |
+ |
+ |
+### PHP protobuf compiler |
+ |
+You need to install `protoc-gen-php` to generate stub class `.php` files from service definition `.proto` files. |
+ |
+```sh |
+$ cd grpc/src/php/vendor/datto/protobuf-php # if you had run `composer install` in the previous step |
+ |
+OR |
+ |
+$ git clone https://github.com/stanley-cheung/Protobuf-PHP # clone from github repo |
+ |
+$ gem install rake ronn |
+$ rake pear:package version=1.0 |
+$ sudo pear install Protobuf-1.0.tgz |
+``` |
+ |
+### Client Stub |
+ |
+Generate client stub classes from `.proto` files |
+ |
+```sh |
+$ cd grpc/src/php |
+$ ./bin/generate_proto_php.sh |
+``` |
+ |
+### Run test server |
+ |
+Run a local server serving the math services. Please see [Node][] for how to run an example server. |
+ |
+```sh |
+$ cd grpc |
+$ npm install |
+$ nodejs src/node/test/math/math_server.js |
+``` |
+ |
+### Run test client |
+ |
+Run the generated code tests |
+ |
+```sh |
+$ cd grpc/src/php |
+$ ./bin/run_gen_code_test.sh |
+``` |
+ |
+## Use the gRPC PHP extension with Apache |
+ |
+Install `apache2`, in addition to `php5` above |
+ |
+```sh |
+$ sudo apt-get install apache2 |
+``` |
+ |
+Add this line to your `php.ini` file, e.g. `/etc/php5/apache2/php.ini` |
+ |
+```sh |
+extension=grpc.so |
+``` |
+ |
+Restart apache |
+ |
+```sh |
+$ sudo service apache2 restart |
+``` |
+ |
+Make sure the Node math server is still running, as above. |
+ |
+```sh |
+$ cd grpc |
+$ npm install |
+$ nodejs src/node/test/math/math_server.js |
+``` |
+ |
+Make sure you have run `composer install` to generate the `vendor/autoload.php` file |
+ |
+```sh |
+$ cd grpc/src/php |
+$ composer install |
+``` |
+ |
+Make sure you have generated the client stub `math.php` |
+ |
+```sh |
+$ ./bin/generate_proto_php.sh |
+``` |
+ |
+Copy the `math_client.php` file into your Apache document root, e.g. |
+ |
+```sh |
+$ cp tests/generated_code/math_client.php /var/www/html |
+``` |
+ |
+You may have to fix the first two lines to point the includes to your installation: |
+ |
+```php |
+include 'vendor/autoload.php'; |
+include 'tests/generated_code/math.php'; |
+``` |
+ |
+Connect to `localhost/math_client.php` in your browser, or run this from command line: |
+ |
+```sh |
+$ curl localhost/math_client.php |
+``` |
+ |
+## Use the gRPC PHP extension with Nginx/PHP-FPM |
+ |
+Install `nginx` and `php5-fpm`, in addition to `php5` above |
+ |
+```sh |
+$ sudo apt-get install nginx php5-fpm |
+``` |
+ |
+Add this line to your `php.ini` file, e.g. `/etc/php5/fpm/php.ini` |
+ |
+```sh |
+extension=grpc.so |
+``` |
+ |
+Uncomment the following lines in your `/etc/nginx/sites-available/default` file: |
+ |
+``` |
+location ~ \.php$ { |
+ include snippets/fastcgi-php.conf; |
+ fastcgi_pass unix:/var/run/php5-fpm.sock; |
+} |
+``` |
+ |
+Restart nginx and php-fpm |
+ |
+```sh |
+$ sudo service nginx restart |
+$ sudo service php5-fpm restart |
+``` |
+ |
+Make sure the Node math server is still running, as above. |
+ |
+```sh |
+$ cd grpc |
+$ npm install |
+$ nodejs src/node/test/math/math_server.js |
+``` |
+ |
+Make sure you have run `composer install` to generate the `vendor/autoload.php` file |
+ |
+```sh |
+$ cd grpc/src/php |
+$ composer install |
+``` |
+ |
+Make sure you have generated the client stub `math.php` |
+ |
+```sh |
+$ ./bin/generate_proto_php.sh |
+``` |
+ |
+Copy the `math_client.php` file into your Nginx document root, e.g. |
+ |
+```sh |
+$ cp tests/generated_code/math_client.php /var/www/html |
+``` |
+ |
+You may have to fix the first two lines to point the includes to your installation: |
+ |
+```php |
+include 'vendor/autoload.php'; |
+include 'tests/generated_code/math.php'; |
+``` |
+ |
+Connect to `localhost/math_client.php` in your browser, or run this from command line: |
+ |
+```sh |
+$ curl localhost/math_client.php |
+``` |
+ |
+[Node]:https://github.com/grpc/grpc/tree/master/src/node/examples |