我一直在測試一些PHP腳本,它們使用aws-sdk-php將文件上傳到S3存儲。這些腳本似乎很好地工作時,他們直接從瀏覽器中執行,但未能試圖通過一個API類Luracast Restler使用它時3.0AWS PHP SDK 2(aws.phar)不支持Restler Framework
是上傳一些虛擬的文件就像下面的一個示例腳本:
<?php
require_once (dirname(__FILE__) . "/../lib/aws/aws.phar");
use Aws\Common\Aws;
use Aws\S3\Enum\CannedAcl;
use Aws\S3\Exception\S3Exception;
use Aws\Common\Enum\Region;
function test(){
// Instantiate an S3 client
$s3 = Aws::factory(array(
'key' => 'key',
'secret' => 'secret',
'region' => Region::EU_WEST_1
))->get('s3');
try {
$s3->putObject(array(
'Bucket' => 'my-bucket',
'Key' => '/test/test.txt',
'Body' => 'example file uploaded from php!',
'ACL' => CannedAcl::PUBLIC_READ
));
} catch (S3Exception $e) {
echo "There was an error uploading the file.\n";
}
}
該腳本被放置在文件夾/util/test.php中,而AWS-PHP-SDK是在/lib/aws/aws.phar
要測試這個測試方法是寫得很好我已經創建了另一個PHP腳本/test/upload.php用下面的代碼:
<?php
require_once (dirname(__FILE__) . '/../util/test.php');
test();
這樣我就可以在瀏覽器中輸入http://mydomain.com/test/upload.php和所有工作正常,文件在S3存儲上傳。
然而,當我打電話的功能測試()從與Restler框架的API類,我有說,AWS無法發現錯誤:
Fatal error: Class 'Aws\Common\Aws' not found in /var/app/current/util/test.php on line 12
然而代碼是完全一樣的,完美從upload.php調用時起作用。我一直在浪費時間來弄清楚這裏發生了什麼,但我無法得出任何結論。就像aws-php-sdk自動加載器在某些情況下無法正常工作。
任何提示?