2015-09-18 42 views
0

我有一個非常簡單的代碼,但最終的命令我不能將它應用於生成的文件,我無法重命名該文件,我不知道爲什麼。這不是一個重命名的問題,因爲如果我更改$cmd ="cp '$textfile''$file'"$cmd ="mv '$textfile''$file'"的重命名,它也不起作用。我最好用代碼解釋一下:php腳本,不能將命令應用於生成的文件

<?php 
// the original file to work with 
$file = "COPYING.odt"; 

//change the extension of doc|pdf|docx|odt|rtf files to txt 
$txtfile = preg_replace('"\.(doc|pdf|docx|odt|rtf)$"', '.txt', $file); 

//convert the odt file into txt and name it with the original name but txt extension 
$cmd = "/usr/bin/unoconv -f txt '$file' -o '$textfile'"; 
shell_exec($cmd); 

//store the file in the originals files folder 
rename("$file", "orig/$file"); 

//rename the generated txt file with the original name and extension "COPYING.odt" 
rename("$textfile", "$file"); 


echo "conversion of file <em>$file</em> done"; 
?> 

有什麼建議嗎?謝謝。

UPDATE我忘了說的一件事是我將這個腳本應用到上傳的文件,所以我不能給出$ file的靜態名稱,而是給出變量$ file。

更新2繼@AlanMachado建議,我已經改變了MV爲命令重命名,而這個重命名的作品,但不是未來。

+1

的文件夾中你有足夠的權限來重命名文件/寫? – Epodax

+0

如果你想要做的是['rename'](http://php.net/manual/en/function.rename.php)或者甚至移動文件,那麼有更好,更邪惡的方法來做到這一點PHP比使用'shell_exec' –

+0

也許你需要在重命名命令中添加(相對或絕對)文件路徑? – jtheman

回答

0

對不起球員,我已經三天這個劇本,這就是爲什麼我問的#1的問題,但剛纔我已經意識到這是一個錯字的錯誤,是:

$txtfile = preg_replace('"\.(doc|pdf|docx|odt|rtf)$"', '.txt', $file); 

txtfile沒有e在TXT,而

rename("$textfile", "$file"); 

文本文件與電子文本中,我真的很抱歉。

無論如何,我不知道爲什麼,這個命令的結果是用正確的文件名的文件:

$cmd = "/usr/bin/unoconv -f txt '$file' -o '$textfile'"; 
相關問題