From f8919af31a23850832ce2c4c35fc23c4420919e1 Mon Sep 17 00:00:00 2001 From: jknapp Date: Fri, 23 Jan 2026 18:32:19 -0800 Subject: [PATCH] Fix SDK autoloader path for Twilio namespace The SDK files are at twilio/sdk/Twilio/Rest/Client.php but the autoloader was looking at twilio/sdk/Rest/Client.php. Fixed by using the full class name in the path instead of stripping the Twilio\ prefix. Co-Authored-By: Claude Opus 4.5 --- install-twilio-sdk-external.sh | 12 ++++++------ install-twilio-sdk.sh | 18 +++++++++--------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/install-twilio-sdk-external.sh b/install-twilio-sdk-external.sh index 9005fb0..7738f75 100755 --- a/install-twilio-sdk-external.sh +++ b/install-twilio-sdk-external.sh @@ -101,8 +101,8 @@ if (!defined('TWILIO_AUTOLOADER_REGISTERED')) { } // Convert class name to file path - $relative_class = substr($class, 7); // Remove 'Twilio\' - $file = __DIR__ . '/twilio/sdk/' . str_replace('\\', '/', $relative_class) . '.php'; + // The SDK structure is: twilio/sdk/Twilio/Rest/Client.php for Twilio\Rest\Client + $file = __DIR__ . '/twilio/sdk/' . str_replace('\\', '/', $class) . '.php'; if (file_exists($file)) { require_once $file; @@ -120,10 +120,10 @@ if (!defined('TWILIO_AUTOLOADER_REGISTERED')) { // Load essential Twilio classes manually to ensure they're available $essential_classes = [ - __DIR__ . '/twilio/sdk/Rest/Client.php', - __DIR__ . '/twilio/sdk/TwiML/VoiceResponse.php', - __DIR__ . '/twilio/sdk/Exceptions/TwilioException.php', - __DIR__ . '/twilio/sdk/Security/RequestValidator.php' + __DIR__ . '/twilio/sdk/Twilio/Rest/Client.php', + __DIR__ . '/twilio/sdk/Twilio/TwiML/VoiceResponse.php', + __DIR__ . '/twilio/sdk/Twilio/Exceptions/TwilioException.php', + __DIR__ . '/twilio/sdk/Twilio/Security/RequestValidator.php' ]; foreach ($essential_classes as $class_file) { diff --git a/install-twilio-sdk.sh b/install-twilio-sdk.sh index fe293e5..4bd49be 100644 --- a/install-twilio-sdk.sh +++ b/install-twilio-sdk.sh @@ -77,16 +77,16 @@ if (!defined('TWILIO_AUTOLOADER_REGISTERED')) { if (strpos($class, 'Twilio\\') !== 0) { return false; } - + // Convert class name to file path - $relative_class = substr($class, 7); // Remove 'Twilio\' - $file = __DIR__ . '/twilio/sdk/' . str_replace('\\', '/', $relative_class) . '.php'; - + // The SDK structure is: twilio/sdk/Twilio/Rest/Client.php for Twilio\Rest\Client + $file = __DIR__ . '/twilio/sdk/' . str_replace('\\', '/', $class) . '.php'; + if (file_exists($file)) { require_once $file; return true; } - + return false; }); @@ -98,10 +98,10 @@ if (!defined('TWILIO_AUTOLOADER_REGISTERED')) { // Load essential Twilio classes manually to ensure they're available $essential_classes = [ - __DIR__ . '/twilio/sdk/Rest/Client.php', - __DIR__ . '/twilio/sdk/TwiML/VoiceResponse.php', - __DIR__ . '/twilio/sdk/Exceptions/TwilioException.php', - __DIR__ . '/twilio/sdk/Security/RequestValidator.php' + __DIR__ . '/twilio/sdk/Twilio/Rest/Client.php', + __DIR__ . '/twilio/sdk/Twilio/TwiML/VoiceResponse.php', + __DIR__ . '/twilio/sdk/Twilio/Exceptions/TwilioException.php', + __DIR__ . '/twilio/sdk/Twilio/Security/RequestValidator.php' ]; foreach ($essential_classes as $class_file) {