2013-04-12 2 views
0

В настоящее время я использую следующий код:AWSSDK S3 - if_object_exists продолжает возвращаться ложным, когда файл существует

include 'lib/sdk.class.php'; 
$s3 = new AmazonS3(); 
$bucket = 'mybucket'.strtolower($s3->key); 
$key = 'myfile.txt'; 
$response = $s3->if_object_exists($bucket,$key); 

Но $response продолжает возвращаться ложным, когда файл не существует, есть то, что я не хватает?

ответ

1

После беспорядка с кодом здесь и там я просмотрел некоторые из моих предыдущих вызовов S3 с других сайтов, которые я создал, и сравнил их. Я замечаю на моих предыдущих кодах я не использовал следующее:

$bucket = 'mybucket'.strtolower($s3->key); 

Вместо этого я использовал:

$bucket = 'mybucket'; 

Окончательный код выглядит следующим образом:

include 'lib/sdk.class.php'; 
$s3 = new AmazonS3(); 
$bucket = 'mybucket'; 
$key = 'myfile.txt'; 
$response = $s3->if_object_exists($bucket,$key); 

Это закончилось . Тем не менее, я не знаю, почему это работает над примером, предоставленным amazon.

+0

Это решение работает для меня тоже, но я не знаю почему. –

1

Если файл действительно существует и доступен, то эта функция должна возвращать значение true. Я хотел бы попробовать поставить SDK в режиме отладки, выполнив следующие действия:

$s3->enable_debug_mode(true); 

Это превращает CURL_VERBOSE выход, и вы должны быть в состоянии смотреть на фактический запрос HTTP и ответ собирается S3 при выполнении кода. Это должно помочь вам понять, что может пойти не так. После этого, если окажется, что вы думаете, что есть ошибка, вы можете записывать проблемы в GitHub для SDK по адресу https://github.com/amazonwebservices/aws-sdk-for-php/issues.

Смежные вопросы