amazon s3 — при выполнении команды CLI AWS из php не удается найти учетные данные

У меня точно такая же проблема, как Выполнение команды CLI AWS из php приводит к невозможности найти учетные данные

Я сделал:

cd ~/.aws
mv config credentials

Но это не помогло.

Итак, что я сделал, так и config и учетные данные имеют одинаковое содержимое:

[дефолт]

aws_access_key_id = AKIAJIPLT472C32RD6AQ

aws_secret_access_key = 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

выход = JSON

регион = ap-юго-восток-1

Код, который я использую в моем файле PHP:

$s3 = system("aws s3 cp /var/www/html/v2/upload/__rmx4hqf.png s3://<bucket>/somefolder 2>&1");

1

Решение

Я думаю, что php команда не может найти файл учетных данных aws, потому что пользователь, которого вы запустили $ aws configure отличается от эффективного пользователя PHP. Вы не предоставили достаточно информации о том, как вы запустили команду configure или как выполнялся скрипт php, так что это только мое предположение.

Что произойдет, если вы явно передадите путь к файлу учетных данных через переменную среды AWS_CONFIG_FILE (например. $s3 = system("AWS_CONFIG_FILE=/path/to/credential aws s3 cp ...)?

0

Другие решения

Попробуйте добавить свой регион

$s3 = system("aws s3 cp /var/www/html/v2/upload/__rmx4hqf.png s3://<bucket>/somefolder 2>&1 --region ap-southeast-1");
0

лайк колчан скажем, apache2 запускается от другого пользователя, а затем от конечного пользователя
вы можете увидеть apache пользователя ENV Vars с помощью команды getenv();
чтобы добавить переменные в apache2 ENV, вам нужно использовать putenv («string»);

Вы должны добавить сертификаты AWS таким образом

putenv('AWS_DEFAULT_REGION=' . $region);
putenv('AWS_ACCESS_KEY_ID=' . $key);
putenv('AWS_SECRET_ACCESS_KEY=' . $secret);e
print_r(getenv());

только это решение работает для меня, когда я пытаюсь запустить aws cli из php файла

оригинальный ответ на форуме

0