diff --git a/lib/php/lib/Protocol/TJSONProtocol.php b/lib/php/lib/Protocol/TJSONProtocol.php
index 9144884..e1412cc 100644
--- a/lib/php/lib/Protocol/TJSONProtocol.php
+++ b/lib/php/lib/Protocol/TJSONProtocol.php
@@ -108,7 +108,7 @@
     {
         $result = TType::STOP;
 
-        if (strlen($name) > 1) {
+        if (strlen((string) $name) > 1) {
             switch (substr($name, 0, 1)) {
                 case 'd':
                     $result = TType::DOUBLE;
diff --git a/lib/php/lib/StringFunc/Core.php b/lib/php/lib/StringFunc/Core.php
index 39a75b3..376e437 100644
--- a/lib/php/lib/StringFunc/Core.php
+++ b/lib/php/lib/StringFunc/Core.php
@@ -27,14 +27,14 @@
     {
         // specifying a null $length would return an empty string
         if ($length === null) {
-            return substr($str, $start);
+            return substr((string) $str, $start);
         }
 
-        return substr($str, $start, $length);
+        return substr((string) $str, $start, $length);
     }
 
     public function strlen($str)
     {
-        return strlen($str);
+        return strlen((string) $str);
     }
 }
diff --git a/lib/php/lib/StringFunc/Mbstring.php b/lib/php/lib/StringFunc/Mbstring.php
index 968ff18..ac48309 100644
--- a/lib/php/lib/StringFunc/Mbstring.php
+++ b/lib/php/lib/StringFunc/Mbstring.php
@@ -36,11 +36,11 @@
             $length = $this->strlen($str) - $start;
         }
 
-        return mb_substr($str, $start, $length, '8bit');
+        return mb_substr((string) $str, $start, $length, '8bit');
     }
 
     public function strlen($str)
     {
-        return mb_strlen($str, '8bit');
+        return mb_strlen((string) $str, '8bit');
     }
 }
diff --git a/lib/php/lib/TMultiplexedProcessor.php b/lib/php/lib/TMultiplexedProcessor.php
index a64a968..d276cae 100644
--- a/lib/php/lib/TMultiplexedProcessor.php
+++ b/lib/php/lib/TMultiplexedProcessor.php
@@ -97,7 +97,7 @@
         }
 
         // Extract the service name and the new Message name.
-        if (strpos($fname, TMultiplexedProtocol::SEPARATOR) === false) {
+        if (strpos((string) $fname, TMultiplexedProtocol::SEPARATOR) === false) {
             throw new TException("Service name not found in message name: {$fname}. Did you " .
                 "forget to use a TMultiplexProtocol in your client?");
         }
diff --git a/lib/php/src/TStringUtils.php b/lib/php/src/TStringUtils.php
index 894baf8..544211b 100644
--- a/lib/php/src/TStringUtils.php
+++ b/lib/php/src/TStringUtils.php
@@ -12,15 +12,15 @@
     {
         // specifying a null $length would return an empty string
         if ($length === null) {
-            return substr($str, $start);
+            return substr((string) $str, $start);
         }
 
-        return substr($str, $start, $length);
+        return substr((string) $str, $start, $length);
     }
 
     public function strlen($str)
     {
-        return strlen($str);
+        return strlen((string) $str);
     }
 }
 
@@ -39,12 +39,12 @@
             $length = $this->strlen($str) - $start;
         }
 
-        return mb_substr($str, $start, $length, '8bit');
+        return mb_substr((string) $str, $start, $length, '8bit');
     }
 
     public function strlen($str)
     {
-        return mb_strlen($str, '8bit');
+        return mb_strlen((string) $str, '8bit');
     }
 }
 
