2012-07-04 133 views
1

當我在shell命令提示符中鍵入以下內容時,它會將.docx文件轉換爲.pdf文件。exec()不會執行任何操作

HOME=/tmp libreoffice3.5 --headless -convert-to pdf --outdir /tmp/ayb /tmp/ayb/document_16_64.docx 

但是,當我運行下面的PHP腳本時,沒有任何反應。我已將/ tmp/ayb權限設置爲777,但仍然無法執行。有任何想法嗎?謝謝

<?php 
    $cmd='HOME=/tmp libreoffice3.5 --headless -convert-to pdf --outdir /tmp/ayb /tmp/ayb/document_16_64.docx'; 
    exec($cmd); 
?> 

編輯 - 以下腳本會產生以下結果。請注意,exec()在shell_exec()不需要時需要一些時間。

<?php 
    $cmd='HOME=/tmp; /usr/bin/libreoffice3.5 --headless -convert-to pdf --outdir /tmp/ayb /tmp/ayb/document_16_64.docx'; 
    echo($cmd); 
    exec($cmd,$out,$ret); 
    echo('<br />exec()<br />$out='.print_r($out,1).'<br />$ret='.$ret); 
    $out=shell_exec($cmd); 
    echo('<br />shell_exec()<br />$out='.print_r($out,1)); 
?> 

輸出

HOME=/tmp; /usr/bin/libreoffice3.5 --headless -convert-to pdf --outdir /tmp/ayb /tmp/ayb/document_16_64.docx 
exec() 
$out=Array () 
$ret=134 
shell_exec() 
$out= 
+3

指定'/ path/to/libreoffice3.5'的完整路徑。它可能不在PHP正在使用的'$ PATH'中。 –

+0

我只是檢查,你是不是在安全模式是你? – JRSofty

+0

@Michael。謝謝,但沒有區別。 – user1032531

回答

0

阿帕奇是否具有正確的用戶權限?如果您以root身份登錄到SSH,那麼您將可以完全訪問命令;所以你可能需要將Apache的權限升級到某些目錄。

您可能還會覺得值得嘗試shell_exec()。正如Michael所指出的那樣,這也可能是一個目錄問題。指向完整的目錄路徑而不是相對路徑。

+0

當我進入命令shell時,我以root身份登錄。請注意,我已將tmp/ayb的權限更改爲777,以嘗試緩解此問題。是否還有其他類型的「權限」我缺少?另外,我已經嘗試shell_exec(),但沒有區別。謝謝! – user1032531

+0

此外,只是爲了排除一些東西,我嘗試了下面的PHP,它的工作原理如下:exec('cp /tmp/ayb/document_16_64.docx /tmp/ayb/document_16_64_2.docx'); – user1032531

相關問題