Выполнение команды AWS CLI из php не может найти учетные данные

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

Я сделал:

cd ~/.aws
mv config credentials

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

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

[дефолт]

aws_access_key_id = AKIAJIPLT472C32RD6AQ

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

output = json

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

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

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

person woshitom    schedule 25.05.2015    source источник
comment
удалите 2>&1 с конца, чтобы получить ошибку.   -  person Jigar    schedule 25.05.2015
comment
@Jigar, когда я удаляю эту строку, ошибка не отображается, но файл все еще не загружается   -  person woshitom    schedule 25.05.2015
comment
вы должны получить ошибку в $s3, поэтому var_dump($s3)   -  person Jigar    schedule 25.05.2015


Ответы (3)


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

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

person quiver    schedule 25.05.2015

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

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

например, quiver скажем, что apache2 запускается от другого пользователя, затем пользователь termina, вы можете увидеть переменные ENV пользователя apache с помощью команды getenv();, чтобы добавить вары в apache2 ENV необходимо использовать putenv ("строка");

вам нужно добавить сертификаты 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

оригинальный ответ aws forum

person yehonatan yehezkel    schedule 03.07.2017