2013-02-06 36 views
1

我想從我的PHP腳本中使用s3cmd。一切都在shell中工作,但同樣不能從我的PHP腳本工作。從PHP腳本運行S3cmd不起作用

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

這是行不通的,然後我給完整路徑我s3cmd安裝

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

在PHP腳本不工作,但同樣工作在指揮,

的PHP文件,該文件正在調用webroot中的shell_exec。

可能是s3cmd配置爲root用戶的問題,而且我是從PHP運行的,它是www-data。如果這是問題,我該如何爲www數據創建配置文件。

幫我看看我做錯了什麼。

感謝

編輯 我使用S3cmd。在我的cron腳本中運行命令。 cron腳本是一個PHP腳本。運行cron的用戶是web11,s3cmd是使用root用戶配置的。

所以當我在我的PHP腳本中使用shell_exec()運行s3cmd時失敗。但是,當我運行在shell中它工作正常。

s3cmd ls

這工作正常。因爲我使用root用戶登錄。

我嘗試使用runuser命令

runuser -l根-c 「s3cmd LS」

這工作正常和水桶的顯示列表來運行它。但是當我運行使用

runuser -l根-c 「s3cmd LS」

這是行不通的。我試圖通過給s3cmd

在/ usr/bin中/ s3cmd LS

這部作品在外殼,但不是在我的PHP腳本的完整路徑。

我更改了PHP腳本的權限777,並將root作爲該用戶的所有者。但仍然不起作用。

如何從PHP腳本運行s3cmd。 ?我在亞馬遜Ec2實例。

回答

0

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; 
} 

這asumes,你跑 「s3cmd --configure」 成功。