2012-10-10 54 views
1

我想將PDF轉換爲JPG文件與此代碼:ImageMagick的PDF格式爲JPG - 執行好,但不創建文件

$pdf_file = 'text.pdf'; 
$save_to = 'demo.jpg'; //make sure that apache has permissions to write in this folder! (common problem) 
//execute ImageMagick command 'convert' and convert PDF to JPG with applied settings 
exec('convert '.$pdf_file.' '.$save_to, $output, $return_var); 

if($return_var == 0) { //if exec successfuly converted pdf to jpg 
print "Conversion OK"; 
} 
else print "Conversion failed.<br />".$output; 

而且我得到的消息轉換確定,但圖像文件不創建。當我在不同的服務器上嘗試這個時,一切正常。 根目錄的權限設置爲777.我不知道爲什麼它不起作用......我不知道兩個服務器上安裝了哪個版本的Imagemagick。也許這是問題?在phpinfo()中沒有關於版本或任何信息。

+0

如果在命令行級別執行轉換,轉換是否正常工作? –

+0

您可以驗證轉換版本,並確保它正確運行'exec('convert --version',$ output); var_dump($ output);' – Brett

+0

This shows me NULL – instead

回答

2

但是在運行麻煩「轉換」是因爲PHP函數exec()已在您的php.ini文件中被禁用。

當EXEC()命令失敗有,可以採取解決該問題的多個步驟:

  1. 驗證是否安全模式開啓。特別是文檔說:

    注意:啓用安全模式時,您只能執行 safe_mode_exec_dir中的文件。出於實際原因,目前不允許 在可執行文件的路徑中包含..組件。

  2. 打開錯誤報告也看看是否給出了更多的信息。

    ini_set('display_errors', 1); 
    ini_set('error_reporting', E_ALL); 
    
  3. 簡化EXEC()命令的東西,應始終工作:這可以通過添加如下代碼到你的腳本的頂部來完成

    exec('/bin/echo helloWorld',$output); 
    var_dump($output); 
    

在你當您嘗試上述步驟#3時,它將返回null。空是PHP在exec()函數被禁用時返回的內容。另外,如果你能打開錯誤報告(步驟#2),輸出看起來會是像下面這樣:

PHP Warning: exec() has been disabled for security reasons in /home/path/to/file.php on line 2 
NULL 

這個問題的解決方案是啓用php.ini中的exec函數或去到允許使用該功能的主機/服務器。

+0

是的,你是對的。當我從第二點添加代碼時,出現exec()被禁用的錯誤。我還看到在phpinfo中有部分:disable_functions,並且顯示了exec函數。非常感謝 – instead

0

嘗試顯式錯誤報告:error_reporting(E_ALL),也許它會提供有關exec權限的警告。

另外:使用「根目錄的權限」表示您正在執行並保存文件的文件夾?

+0

是的,我沒有精確。文件夾和該文件夾中的所有文件都有777. error_reporting不提供任何內容。 – instead

相關問題