diff --git a/lib/php/src/transport/TPhpStream.php b/lib/php/src/transport/TPhpStream.php
index 8a4fb0a..03837a8 100644
--- a/lib/php/src/transport/TPhpStream.php
+++ b/lib/php/src/transport/TPhpStream.php
@@ -40,13 +40,13 @@
     if ($this->read_) {
       $this->inStream_ = @fopen('php://input', 'r');
       if (!is_resource($this->inStream_)) {
-        throw new Exception('TPhpStream: Could not open php://input');
+        throw new TException('TPhpStream: Could not open php://input');
       }
     }
     if ($this->write_) {
       $this->outStream_ = @fopen('php://output', 'w');
       if (!is_resource($this->outStream_)) {
-        throw new Exception('TPhpStream: Could not open php://output');
+        throw new TException('TPhpStream: Could not open php://output');
       }
     }
   }
@@ -71,7 +71,7 @@
   public function read($len) {
     $data = @fread($this->inStream_, $len);
     if (!$data) {
-      throw new Exception('TPhpStream: Could not read '.$len.' bytes');
+      throw new TException('TPhpStream: Could not read '.$len.' bytes');
     }
     return $data;
   }
@@ -80,7 +80,7 @@
     while (strlen($buf) > 0) {
       $got = @fwrite($this->outStream_, $buf);
       if ($got === 0 || $got === FALSE) {
-        throw new Exception('TPhpStream: Could not write '.strlen($buf).' bytes');
+        throw new TException('TPhpStream: Could not write '.strlen($buf).' bytes');
       }
       $buf = substr($buf, $got);
     }
diff --git a/lib/php/src/transport/TSocket.php b/lib/php/src/transport/TSocket.php
index 1600b6f..cce3a44 100644
--- a/lib/php/src/transport/TSocket.php
+++ b/lib/php/src/transport/TSocket.php
@@ -160,7 +160,7 @@
       if ($this->debug_) {
         call_user_func($this->debugHandler_, $error);
       }
-      throw new Exception($error);
+      throw new TException($error);
     }
     
     stream_set_timeout($this->handle_, 0, $this->sendTimeout_*1000);
@@ -197,17 +197,17 @@
       if ($buf === FALSE || $buf === '') {
         $md = stream_get_meta_data($this->handle_);
         if ($md['timed_out']) {
-          throw new Exception('TSocket: timed out reading '.$len.' bytes from '.
-                              $this->host_.':'.$this->port_);
+          throw new TException('TSocket: timed out reading '.$len.' bytes from '.
+                               $this->host_.':'.$this->port_);
         } else {
-          throw new Exception('TSocket: Could not read '.$len.' bytes from '.
-                              $this->host_.':'.$this->port_);
+          throw new TException('TSocket: Could not read '.$len.' bytes from '.
+                               $this->host_.':'.$this->port_);
         }
       } else if (($sz = strlen($buf)) < $len) {
         $md = stream_get_meta_data($this->handle_);
         if ($md['timed_out']) {
-          throw new Exception('TSocket: timed out reading '.$len.' bytes from '.
-                              $this->host_.':'.$this->port_);
+          throw new TException('TSocket: timed out reading '.$len.' bytes from '.
+                               $this->host_.':'.$this->port_);
         } else {
           $pre .= $buf;
           $len -= $sz;
@@ -233,11 +233,11 @@
     if ($data === FALSE || $data === '') {
       $md = stream_get_meta_data($this->handle_);
       if ($md['timed_out']) {
-        throw new Exception('TSocket: timed out reading '.$len.' bytes from '.
-                            $this->host_.':'.$this->port_);
+        throw new TException('TSocket: timed out reading '.$len.' bytes from '.
+                             $this->host_.':'.$this->port_);
       } else {
-        throw new Exception('TSocket: Could not read '.$len.' bytes from '.
-                            $this->host_.':'.$this->port_);
+        throw new TException('TSocket: Could not read '.$len.' bytes from '.
+                             $this->host_.':'.$this->port_);
       }
     }
     return $data;
@@ -258,11 +258,11 @@
       if ($got === 0 || $got === FALSE) {
         $md = stream_get_meta_data($this->handle_);
         if ($md['timed_out']) {
-          throw new Exception('TSocket: timed out writing '.$len.' bytes from '.
-                              $this->host_.':'.$this->port_);
+          throw new TException('TSocket: timed out writing '.$len.' bytes from '.
+                               $this->host_.':'.$this->port_);
         } else {
-            throw new Exception('TSocket: Could not write '.strlen($buf).' bytes '.
-                                $this->host_.':'.$this->port_);
+            throw new TException('TSocket: Could not write '.strlen($buf).' bytes '.
+                                 $this->host_.':'.$this->port_);
         }
       }
       $buf = substr($buf, $got);
@@ -275,8 +275,8 @@
   public function flush() {
     $ret = fflush($this->handle_);
     if ($ret === FALSE) {
-      throw new Exception('TSocket: Could not flush: '.
-                          $this->host_.':'.$this->port_);
+      throw new TException('TSocket: Could not flush: '.
+                           $this->host_.':'.$this->port_);
     }
   }
 }
diff --git a/lib/php/src/transport/TSocketPool.php b/lib/php/src/transport/TSocketPool.php
index 9e5ebcd..b3efb2d 100644
--- a/lib/php/src/transport/TSocketPool.php
+++ b/lib/php/src/transport/TSocketPool.php
@@ -221,7 +221,7 @@
             // Successful connection, return now
             return;
 
-          } catch (Exception $x) {
+          } catch (TException $tx) {
             // Connection failed
           }
         }
@@ -268,7 +268,7 @@
     if ($this->debug_) {
       call_user_func($this->debugHandler_, $error);
     }
-    throw new Exception($error);
+    throw new TException($error);
   }
 }
 
