2017-09-19 8 views
0

[modifier après la réponse de Bonzo] après le code suivant, je reçois cette erreur:exécution de conversion d'ImageMagick code d'erreur retour 1

Array 
(
    [0] => magick: unable to create temporary file 'aboutproject1.pdf': Permission denied @ error/pdf.c/ReadPDFImage/476. 
) 

Comment puis-je permettre cration de fichier temporaire? Mon utilisateur actuel est Daemon (apache/localhost)


[avant modifier] Je suis en train d'émettre une commande shell de mon PHP pour convertir un fichier PDF au format TIFF. Mais je reçois le code d'erreur 1. Après mon code:

<?php 
if(isset($_FILES['file_up']["name"])){ 
//print_r($_FILES); 
$file_name = $_FILES['file_up']["name"]; 
$tmp_name = $_FILES['file_up']["tmp_name"]; 

if(move_uploaded_file($tmp_name, "$file_name")){ 

$onlyname = pathinfo($_FILES['file_up']['name'], PATHINFO_FILENAME); 
chmod("$file_name", 0777); 

//Command that is returning error code 1 
//Iam running it on aboutproject.pdf STATIC for novv. 
exec("/usr/local/Cellar/imagemagick/7.0.7-1/bin/convert aboutproject1.pdf anyuf.tif", $output, $retval);  

//returning empty array 
echo "output : ->"; print_r($output) ; 
//returning error code 1 
echo "RETURN : ->".$retval; 

if ($retval == 0){ 

    echo "First command executed !";  
    } 
} 

exit(); 
} 
?> 

S'IL VOUS PLAÎT, ne suit pas:

  • donné la permission de dossier et un script résidant aboutproject1.pdf
  • Quand je fais man convert par le même script PHP, il me donne la bonne sortie (dans le même dossier)
  • Quand je cours la commande par le terminal cela fonctionne
  • aboutproject1.pdf est créé/uploadé par l'utilisateur daemon (apache)
  • J'ai essayé de l'exécuter comme SUDO en manipulant sudoer et en ajoutant un privilège pour www-data (apache) pour exécuter le script et le convertir sans nécessiter de mot de passe.

S'il vous plaît aidez-moi je suis coincé.

Répondre

0

La version 7 utilise la magie plutôt que la conversion. convert peut encore fonctionner mais cela dépend de la façon dont Imagemagick a été installé.

Vous pouvez essayer cette méthode de rapports d'erreur et voir si vous obtenez plus d'informations:

$array=array(); 
echo "<pre>"; 
exec("/usr/local/Cellar/imagemagick/7.0.7-1/bin/convert aboutproject1.pdf anyuf.tif 2>&1", $array); 
echo "<br>".print_r($array)."<br>"; 
echo "</pre>"; 

Au lieu d'utiliser cette /usr/local/Cellar/imagemagick/7.0.7-1/bin/convert Je voudrais juste utiliser la magie. Si votre version change ou si l'emplacement de imagemagick change, vous devrez modifier tous vos scripts.