2011-06-14 106 views
1

我試圖從rar文件夾中刪除文件。 如果您運行/usr/bin/rar d rar_file.rar del.txt此命令從rar_file.rar刪除文件del.txtphp exec從rar刪除文件

我正在使用exec()運行在php中,但它不工作。

<?php 
$file = realpath("temp/temp.rar"); 
chmod($file, 0777); //make sure I can handle the file 
if(file_exists($file)){ //Make sure that the file exists 
    $rar = escapeshellarg($file); 
    echo "/usr/bin/rar d $rar teste.txt"; //Lets see the command 
    exec("/usr/bin/rar d $rar teste.txt", $r); 
} 
echo "\n"; 
print_r($r); 
?> 

這裏是我的輸出:

/usr/bin/rar d '/var/www/temp/temp.rar' teste.txt 
Array 
(
    [0] => 
    [1] => RAR 3.90 beta 2 Copyright (c) 1993-2009 Alexander Roshal 3 Jun 2009 
    [2] => Shareware version   Type RAR -? for help 
) 

沒有刪除從RAR的teste.txt文件。

但是,我複製了命令/usr/bin/rar d '/var/www/temp/temp.rar' teste.txt並在終端中執行。 這裏是我的輸出:

[email protected]:~$ /usr/bin/rar d '/var/www//temp/temp.rar' teste.txt 

RAR 3.90 beta 2 Copyright (c) 1993-2009 Alexander Roshal 3 Jun 2009 
Shareware version   Type RAR -? for help 

Deleting from /var/www/temp/temp.rar 
Deleting teste.txt 
Done 

完美的作品,但在PHP的exec沒有。 我不認爲它的文件權限導致用戶www-data創建rar文件(我之前創建的),並將權限設置爲777而沒有問題。

我使用的是Linux,當然。

我在做什麼錯了? 謝謝!

+0

我不喜歡我所做的,但工作。我在下一分鐘添加了一個cron作業,並且cronjob從rar中刪除了這個文件。可以通過運行exec(「crontab file.txt」)輕鬆添加cronjob。也許我用它作爲解決方案,但我仍然想知道exec爲什麼不起作用 – StiveKnx 2011-06-14 00:17:24

+2

查看消息的error.log或在exec命令後面加上2&1,以顯示錯誤輸出。 – mario 2011-06-14 00:24:00

+0

謝謝,我找到了解決方案。添加2>&1顯示我拒絕創建臨時rar文件的權限。所以我只是修改了www路徑(劇本從哪裏跑),並知道作品! – StiveKnx 2011-06-14 00:33:23

回答

1

解決辦法:

當您使用EXEC(),由於某種原因,EXEC()的腳本完成之前停止執行的東西......這與追加,我已經做了很多的腳本。

所以,mario的解決方案可以幫助我,在命令中添加一個2>&1,exec()僅在腳本完成時停止。