Запуск 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".