diff --git a/stack/cas/connector.server.class.php b/stack/cas/connector.server.class.php
index 0b7071f9ad03b2fdf41917797fe942bac379f32e..c5f5178e67dce2a0bb47b7d6faa3c884924f9050 100644
--- a/stack/cas/connector.server.class.php
+++ b/stack/cas/connector.server.class.php
@@ -74,7 +74,8 @@ class stack_cas_connection_server extends stack_cas_connection_base {
             $zip = new ZipArchive();
             $zip->open($ziptemp);
             for ($i = 0; $i < $zip->numFiles; $i++) {
-                $filenameinzip = $zip->getNameIndex($i);
+                // In some PHP versions, zip::getNameIndex returns filename with leading '/', hence trim.
+                $filenameinzip = trim($zip->getNameIndex($i), '/');
 
                 if ($filenameinzip === 'OUTPUT') {
                     // This one contains the output from maxima.
diff --git a/stack/cas/connector.server_proxy.class.php b/stack/cas/connector.server_proxy.class.php
index e83de1d1e411c4fcb1cc313720b31869e7ea78b6..ef94a31aaa6ef158f1d188782004408e3d864a04 100644
--- a/stack/cas/connector.server_proxy.class.php
+++ b/stack/cas/connector.server_proxy.class.php
@@ -99,7 +99,8 @@ class stack_cas_connection_server_proxy extends stack_cas_connection_base {
             $zip = new ZipArchive();
             $zip->open($ziptemp);
             for ($i = 0; $i < $zip->numFiles; $i++) {
-                $filenameinzip = $zip->getNameIndex($i);
+                // In some PHP versions, zip::getNameIndex returns filename with leading '/', hence trim.
+                $filenameinzip = trim($zip->getNameIndex($i), '/');
 
                 if ($filenameinzip === 'OUTPUT') {
                     // This one contains the output from maxima.