Запуск S3cmd из PHP Script не работает

Я хочу использовать s3cmd из моего скрипта PHP. Все работает из оболочки, но не работает из моего сценария PHP.

shell_exec('s3cmd --config=/root/s3cmd.conf ls');

это не работает, а затем я дал полный путь к моей установке s3cmd

shell_exec('/usr/sbin/s3cmd --config=/root/s3cmd.conf ls');

Не работает в сценарии PHP, но то же самое работает в команде,

Файл PHP, который вызывает shell_exec, находится в webroot.

Возможно, проблема в том, что s3cmd настроен как пользователь root, и я работаю с PHP, который является www-data. Если это проблема, как я могу создать файл конфигурации для www-данных.

Помоги мне, что я делаю не так.

Спасибо

РЕДАКТИРОВАТЬ Я использую S3cmd. Для запуска команд в моем скрипте cron. cron Script - это скрипт PHP. Пользователь, запустивший cron, - это web11, а s3cmd настроен с использованием пользователя root.

поэтому, когда я запускаю s3cmd, используя shell_exec() в моем скрипте PHP, это не удается. Но когда я запускаю в оболочке, все работает нормально.

s3cmd ls

Это отлично работает. поскольку я - логин, используя пользователя root.

я пытался запустить его с помощью команды runuser

runuser -l root -c "s3cmd ls"

Это прекрасно работает и отображает список сегментов. Но когда я бегу, используя

runuser -l root -c "s3cmd ls"

Это не работает. Я попробовал, указав полный путь к s3cmd

/ usr / bin / s3cmd ls

это работает в оболочке, но не в моем сценарии PHP.

Я изменил права доступа 777 для скрипта php и сделал root владельцем этого пользователя. но все равно не работает.

Как я могу запустить s3cmd из сценария PHP.? Я нахожусь на Амазонке Ec2 Instance.

2 ответа

Почему бы не использовать AWS SDK для PHP? Вы можете иметь те же функции, используя метод S3Client.listObjects()

shell_exec('s3cmd --config=/root/s3cmd.conf ls');

Чего здесь не хватает, так это цели команды S3 "ls"?!

В PHP-скриптах он работает нормально:

exec("/usr/bin/s3cmd --config=.s3cfg info s3://YOUR-BUCKET/YOUR-FILE 2> /dev/null", $s3output, $s3return);

// switch due to return code (of shell !)
if($s3return == "0"){
    echo "my file exists";
}
else {
    echo "Error Code : " . $s3return;
}

При этом вы успешно запустили "s3cmd --configure".

Другие вопросы по тегам