diff --git a/test/php/Client.php b/test/php/Client.php
new file mode 100644
index 0000000..1cd4241
--- /dev/null
+++ b/test/php/Client.php
@@ -0,0 +1,26 @@
+<?php
+
+use Thrift\Protocol\TCompactProtocol;
+use Thrift\Transport\THttpClient;
+
+error_reporting(E_ALL);
+
+require_once __DIR__ . '/../../vendor/autoload.php';
+
+$loader = new Thrift\ClassLoader\ThriftClassLoader();
+$loader->registerDefinition('ThriftTest', __DIR__ . '/../../lib/php/test/Resources/packages/phpcm');
+$loader->register();
+
+
+$transport = new THttpClient('localhost', 80);
+
+$transport->setTimeoutSecs($this->timeoutSec);
+
+$transport->addHeaders($this->generateAuthHeader());
+
+$protocol = new TCompactProtocol($transport);
+
+$transport->open();
+
+$client = new \ThriftTest\ThriftTestClient($protocol);
+$client->testVoid();
diff --git a/test/php/Handler.php b/test/php/Handler.php
new file mode 100644
index 0000000..5ca06a2
--- /dev/null
+++ b/test/php/Handler.php
@@ -0,0 +1,114 @@
+<?php
+
+class Handler implements \ThriftTest\ThriftTestIf
+{
+    public function testVoid()
+    {
+        return;
+    }
+
+    public function testString($thing)
+    {
+        return $thing;
+    }
+
+    public function testBool($thing)
+    {
+        return $thing;
+    }
+
+    public function testByte($thing)
+    {
+        return $thing;
+    }
+
+    public function testI32($thing)
+    {
+        return $thing;
+    }
+
+    public function testI64($thing)
+    {
+        return $thing;
+    }
+
+    public function testDouble($thing)
+    {
+        return $thing;
+    }
+
+    public function testBinary($thing)
+    {
+        return $thing;
+    }
+
+    public function testStruct(\ThriftTest\Xtruct $thing)
+    {
+        return $thing;
+    }
+
+    public function testNest(\ThriftTest\Xtruct2 $thing)
+    {
+        return $thing;
+    }
+
+    public function testMap(array $thing)
+    {
+        return $thing;
+    }
+
+    public function testStringMap(array $thing)
+    {
+        return $thing;
+    }
+
+    public function testSet(array $thing)
+    {
+        return $thing;
+    }
+
+    public function testList(array $thing)
+    {
+        return $thing;
+    }
+
+    public function testEnum($thing)
+    {
+        return $thing;
+    }
+
+    public function testTypedef($thing)
+    {
+        return $thing;
+    }
+
+    public function testMapMap($hello)
+    {
+        return $hello;
+    }
+
+    public function testInsanity(\ThriftTest\Insanity $argument)
+    {
+        return $argument;
+    }
+
+    public function testMulti($arg0, $arg1, $arg2, array $arg3, $arg4, $arg5)
+    {
+        // TODO: Implement testMulti() method.
+    }
+
+    public function testException($arg)
+    {
+        throw new \Exception($arg);
+    }
+
+    public function testMultiException($arg0, $arg1)
+    {
+        throw new \Exception($arg0, $arg1);
+    }
+
+    public function testOneway($secondsToSleep)
+    {
+        sleep($secondsToSleep);
+    }
+}
diff --git a/test/php/TestServer.php b/test/php/TestServer.php
new file mode 100644
index 0000000..3b01752
--- /dev/null
+++ b/test/php/TestServer.php
@@ -0,0 +1,87 @@
+<?php
+
+error_reporting(E_ALL);
+
+require_once __DIR__ . '/../../vendor/autoload.php';
+
+$opts = getopt(
+    'h::',
+    [
+        'port::',
+        'domain-socket::',
+        'pipe::',
+        'server-type::',
+        'transport::',
+        'protocol::',
+        'multiplex::',
+        'abstract-namespace::',
+        'ssl::',
+        'zlib::',
+        'processor-events::',
+        'workers::',
+    ]
+);
+if (isset($opts['h'])) {
+    echo <<<HELP
+      -h | --help                  produce help message
+      --port=arg (9090)            Port number to listen
+      --domain-socket=arg          Unix Domain Socket (e.g. /tmp/ThriftTest.thrift)
+      --pipe=arg                   Windows Named Pipe (e.g. MyThriftPipe)
+      --server-type=arg (simple)   type of server, "simple", "thread-pool",
+                                   "threaded", or "nonblocking"
+      --transport=arg (buffered)   transport: buffered, framed, http, anonpipe, zlib
+      --protocol=arg (binary)      protocol: binary, compact, header, json
+      --multiplex                  Add TMultiplexedProtocol service name "ThriftTest"
+      --abstract-namespace         Create the domain socket in the Abstract Namespace
+                                   (no connection with filesystem pathnames)
+      --ssl                        Encrypted Transport using SSL
+      --zlib                       Wrapped Transport using Zlib
+      --processor-events           processor-events
+      -n=arg | --workers=arg (=4)  Number of thread pools workers. Only valid for
+                                   thread-pool server type
+HELP;
+    exit(0);
+}
+
+$port = $opts['port'] ?? 9090;
+$transport = $opts['transport'] ?? 'buffered';
+
+
+$loader = new Thrift\ClassLoader\ThriftClassLoader();
+$loader->registerDefinition('ThriftTest', __DIR__ . '/../../lib/php/test/Resources/packages/phpcm');
+$loader->register();
+
+$sslOptions = \stream_context_create(
+    [
+        'ssl' => [
+            'verify_peer' => false,
+            'verify_peer_name' => false,
+        ],
+    ]
+);
+
+require_once __DIR__ . '/Handler.php';
+
+switch ($transport) {
+    case 'framed':
+        $serverTransportFactory = new \Thrift\Factory\TFramedTransportFactory();
+        break;
+    default:
+        $serverTransportFactory = new \Thrift\Factory\TTransportFactory();
+}
+
+$serverTransport = new \Thrift\Server\TServerSocket('localhost', $port);
+$handler = new Handler();
+$processor = new ThriftTest\ThriftTestProcessor($handler);
+
+$server = new \Thrift\Server\TSimpleServer(
+    $processor,
+    $serverTransport,
+    $serverTransportFactory,
+    $serverTransportFactory,
+    new \Thrift\Factory\TBinaryProtocolFactory(),
+    new \Thrift\Factory\TBinaryProtocolFactory()
+);
+
+echo "Starting the Test server...\n";
+$server->serve();
diff --git a/test/php/test_php.ini b/test/php/test_php.ini
index aeb67cb..5eecb32 100644
--- a/test/php/test_php.ini
+++ b/test/php/test_php.ini
@@ -1,3 +1,3 @@
-extension=thrift_protocol.so
-extension=json.so
-extension=sockets.so
+;extension=thrift_protocol.so
+;extension=json.so
+;extension=sockets.so
