diff --git a/lib/php/README.md b/lib/php/README.md
index e7144fe..4bbc967 100644
--- a/lib/php/README.md
+++ b/lib/php/README.md
@@ -21,7 +21,7 @@
 
 # Using Thrift with PHP
 
-Thrift requires PHP 5. Thrift makes as few assumptions about your PHP
+Thrift requires PHP 7.1 Thrift makes as few assumptions about your PHP
 environment as possible while trying to make some more advanced PHP
 features (i.e. APCu cacheing using asbolute path URLs) as simple as possible.
 
diff --git a/lib/php/test/Unit/BinarySerializerTest.php b/lib/php/test/Unit/BinarySerializerTest.php
index b97da74..744ca7a 100644
--- a/lib/php/test/Unit/BinarySerializerTest.php
+++ b/lib/php/test/Unit/BinarySerializerTest.php
@@ -31,7 +31,7 @@
  */
 class BinarySerializerTest extends TestCase
 {
-    public function setUp()
+    public function setUp(): void
     {
         $loader = new ThriftClassLoader();
         $loader->registerNamespace('ThriftTest', __DIR__ . '/../Resources/packages/php');
diff --git a/lib/php/test/Unit/JsonSerializeTest.php b/lib/php/test/Unit/JsonSerializeTest.php
index 9fdc3f3..66e4d5e 100644
--- a/lib/php/test/Unit/JsonSerializeTest.php
+++ b/lib/php/test/Unit/JsonSerializeTest.php
@@ -31,7 +31,7 @@
  */
 class JsonSerializeTest extends TestCase
 {
-    protected function setUp()
+    protected function setUp(): void
     {
         $loader = new ThriftClassLoader();
         $loader->registerNamespace('ThriftTest', __DIR__ . '/../Resources/packages/phpjs');
diff --git a/lib/php/test/Unit/TJSONProtocolTest.php b/lib/php/test/Unit/TJSONProtocolTest.php
index 178d63b..9837803 100644
--- a/lib/php/test/Unit/TJSONProtocolTest.php
+++ b/lib/php/test/Unit/TJSONProtocolTest.php
@@ -37,7 +37,7 @@
     private $transport;
     private $protocol;
 
-    public static function setUpBeforeClass()
+    public static function setUpBeforeClass(): void
     {
         $loader = new ThriftClassLoader();
         $loader->registerNamespace('ThriftTest', __DIR__ . '/../Resources/packages/php');
@@ -48,7 +48,7 @@
         TJSONProtocolFixtures::populateTestArgsJSON();
     }
 
-    public function setUp()
+    public function setUp(): void
     {
         $this->transport = new TMemoryBuffer();
         $this->protocol = new TJSONProtocol($this->transport);
diff --git a/lib/php/test/Unit/TSimpleJSONProtocolTest.php b/lib/php/test/Unit/TSimpleJSONProtocolTest.php
index 3189d99..8e6a6d9 100644
--- a/lib/php/test/Unit/TSimpleJSONProtocolTest.php
+++ b/lib/php/test/Unit/TSimpleJSONProtocolTest.php
@@ -37,7 +37,7 @@
     private $transport;
     private $protocol;
 
-    public static function setUpBeforeClass()
+    public static function setUpBeforeClass(): void
     {
         $loader = new ThriftClassLoader();
         $loader->registerNamespace('ThriftTest', __DIR__ . '/../Resources/packages/php');
@@ -48,7 +48,7 @@
         TSimpleJSONProtocolFixtures::populateTestArgsSimpleJSON();
     }
 
-    public function setUp()
+    public function setUp(): void
     {
         $this->transport = new TMemoryBuffer();
         $this->protocol = new TSimpleJSONProtocol($this->transport);
diff --git a/lib/php/test/Unit/ValidatorTest.php b/lib/php/test/Unit/ValidatorTest.php
index 06f6e55..b125424 100644
--- a/lib/php/test/Unit/ValidatorTest.php
+++ b/lib/php/test/Unit/ValidatorTest.php
@@ -29,7 +29,7 @@
  */
 class ValidatorTest extends BaseValidatorTest
 {
-    public function setUp()
+    public function setUp(): void
     {
         $loader = new ThriftClassLoader();
         $loader->registerNamespace('ThriftTest', __DIR__ . '/../Resources/packages/phpv');
diff --git a/lib/php/test/Unit/ValidatorTestOop.php b/lib/php/test/Unit/ValidatorTestOop.php
index 79da11e..9558182 100644
--- a/lib/php/test/Unit/ValidatorTestOop.php
+++ b/lib/php/test/Unit/ValidatorTestOop.php
@@ -29,7 +29,7 @@
  */
 class ValidatorTestOop extends BaseValidatorTest
 {
-    public function setUp()
+    public function setUp(): void
     {
         $loader = new ThriftClassLoader();
         $loader->registerNamespace('ThriftTest', __DIR__ . '/../Resources/packages/phpvo');
