簡體   English   中英

從PHP運行exec()無法正常工作

[英]Running exec() from PHP not working

這適用於我的PHP代碼

$output = array();
exec("ls /Applications/XAMPP/htdocs/MY_APP/images", $output);
var_dump($output);

現在,我需要使用ImageMagick的“轉換”命令將PNG文件轉換為PDF文件。 但是以下內容不執行任何操作,也不返回任何錯誤。

$output = array()
exec("convert /Applications/XAMPP/htdocs/MY_APP/images/test.png /Applications/XAMPP/htdocs/MY_APP/images/test.pdf", $output);
var_dump($output);

是權限問題嗎? 我將chmod 777放入了images文件夾。 我還應該檢查什么? 當我從終端運行命令時,它運行正常。

嘗試將convert更改為完整路徑以進行轉換,例如usr / local / bin / convert

可以找到:

<?php
echo "<pre>";
system("type convert"); 
echo "</pre>";
?>

要么

<?php
echo "<pre>";
system('which convert',$path); print_r($path); 
echo "</pre>";
?> 

我剛剛重讀了您的帖子,並注意到您正在使用XAMPP,因此上述答案可能無效。

嘗試將所有內容放在同一文件夾中,以消除路徑等問題。

exec("convert test.png test.pdf");

您還安裝了ghostscript嗎? 為了證明它有效,而不是ghostscript問題,請嘗試另存為jpg而不是pdf。

如果您的PHP代碼是通過Web服務器(例如Apache)執行的,則Apache進程(httpd)可能會在受限制的unix用戶(例如apache或httpd)下運行。 受限制的Unix用戶通常在試圖生成pdf的/Applications/XAMPP/htdocs/MY_APP/images/目錄中沒有寫權限。 嘗試使用以下命令,看看是否可行:

exec("convert /Applications/XAMPP/htdocs/MY_APP/images/test.png /tmp/test.pdf", $output);
var_dump($output);

上面的命令嘗試在/tmp目錄中生成pdf,這通常對於Apache unix用戶是可寫的。

我注意到您已經為圖像文件夾指定了777。 請了解僅chmod 777到images文件夾是不夠的。 您還需要在所有父目錄中向Apache用戶授予寫權限,例如MY_APP,htdocs,XAMPP,Applications等,這是一個很大的安全隱患 ,我必須補充。

我遇到了同樣的問題:安全模式已關閉,但仍然無法執行Image Magick的轉換。

我發現由於某種原因,php無法看到腳本(甚至包括通過php.ini包含在include_path中的路徑)。 檢查日志,發現錯誤是:

sh: convert: command not found

嘗試使用fullpath調用腳本(我使用which convert對其進行了檢查),我最終設法使其通過exec正常運行。

因此,假設轉換全路徑為/usr/local/bin ,請嘗試運行以下命令:

<?php    
    $output = array();
    exec("/usr/local/bin/convert /Applications/XAMPP/htdocs/MY_APP/images/test.png /Applications/XAMPP/htdocs/MY_APP/images/test.pdf", $output);
    var_dump($output);
?>

如果您在Windows下遇到此問題,請嘗試exec('identify pathtoyourfile')。 如果可以,但是exec('convert ...')不起作用,您可能無意中調用了Window的convert實用程序而不是IM的convert。 解決方案是將IM的轉換重命名為cconvert。 或者,檢查IM是否位於PATH環境變量的開頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM