Это мой первый проект PHP, поэтому я действительно не знаю PHP вообще.
То, что я пытаюсь сделать, это загрузить файл в ведро S3 с использованием класса PHP S3. Примерный фрагмент кода работал вчера, но когда я снова начал работать с ним сегодня, почти тот же самый код переставал работать.
Теперь я просто получаю следующую ошибку, возвращаемую функцией putObject:
Warning: S3::putObject(): RequestTimeTooSkewed The difference between the request time and the current time is too large. in /vagrant/LifeInYourWay/S3.php on line 222
Я прочитал несколько мест, что время сервера может вызвать ошибку, поэтому я изменил время своего сервера на America / New_York, но все равно получаю то же самое.
Код PHP, который у меня есть:
if(!class_exists('S3')) require_once('S3.php'); // AWS access if(!defined('awsAccessKey')) define('awsAccessKey', '******'); if(!defined('awsSecretKey')) define('awsSecretKey', '******'); $s3 = new S3(awsAccessKey, awsSecretKey); $imageName = $_FILES['imageFile']['name']; $imageTempName = $_FILES['imageFile']['tmp_name']; $imageLink = $_POST['imageLink']; if(!strlen($imageLink) || $imageLink == 'http://'){ //create a new bucket $s3->putBucket("widget-images", S3::ACL_PUBLIC_READ); //move the file $put = $s3->putObject($s3->inputFile($imageTempName), "widget-images", $imageName, S3::ACL_PUBLIC_READ); if($put){ var_dump($put); $imageUploaded = true; }else{ $imageUploaded = false; } echo($imageUploaded); }else $image = $imageLink;
Неправильные настройки часового пояса вашего компьютера или часового пояса. Поскольку S3 использует текущее время для проверки подлинности запросов, если ваши часы выключены более чем на 15 минут или если ваш часовой пояс неверен (что приводит к перекосу часов), ваши запросы будут терпеть неудачу.