Need to install imagemagick on linux shared hosting

74 Views Asked by At

I'm using a godaddy server and need to install imagemagick on a shared linux server which doesn't have admin rights. I've had multiple people check my code and nothing is wrong with it, the problem is godaddy's implementation of imagemagick isn't working. Running PHP 7.4.

Expected imagemagick to work since it is enabled in select php version, but images called with it aren't loading and producing http error 500 on code page.

<?php
 
namespace Controller\Main;
use Resource\Core\AppController;
use Resource\Core\Registry;
 
class AdoptimageController extends AppController{
 
    public function __construct(){
        parent::__construct();   
    }
 
    public function index(){
        $mysidia = Registry::get("mysidia");
    }
 
    public function view($aid){
        $mysidia = Registry::get("mysidia");
 
        //A not-so-clean way to get the id of the parent page
        $fullurl = $_SERVER['REQUEST_URI'];
        $scrub = explode('/',trim($fullurl,'/'));
        $cleanaid  = end($scrub);
 
        $adopt = $mysidia->db->select("owned_adoptables", array(), "aid='$cleanaid'")->fetchObject();
 
        if($adopt->species == "floof"){
 
            if($adopt->currentlevel == 0){
                $images = array('http:\\\\emotidogs.online\\picuploads\\dog_images\\adult\\colours\\' . $adopt->body . '_colour2.png', #0
                'http:\\\\emotidogs.online\\picuploads\\dog_images\\adult\\colours\\' . $adopt->body . '_colour1.png', #1
                'http:\\\\emotidogs.online\\picuploads\\dog_images\\adult\\markings\\' . $adopt->body . '\\' . $adopt->marking_1 . '.png', #2
                'http:\\\\emotidogs.online\\picuploads\\dog_images\\adult\\lines\\' . $adopt->body . 'fluddy_body_lineart.png'); #3
            }
            elseif($adopt->currentlevel == 1){
                $images = array('http:\\\\emotidogs.online\\picuploads\\dog_images\\adult\\colours\\' . $adopt->body . 'fluffy_body__colour2.png', #0
                'http:\\\\emotidogs.online\\picuploads\\dog_images\\adult\\colours\\' . $adopt->body . 'fluffy_body_colour1.png', #1
                'http:\\\\emotidogs.online\\picuploads\\dog_images\\adult\\markings\\' . $adopt->body . '\\' . $adopt->marking_1 . '.png', #2
                'http:\\\\emotidogs.online\\picuploads\\dog_images\\adult\\lines\\' . $adopt->body . 'fluffy_body_lineart.png'); #3
            }
            elseif($adopt->currentlevel == 2){
                //Snipped for length
            }
            elseif($adopt->currentlevel == 3){
              //Snipped for length
            }
            elseif($adopt->currentlevel == 4){
                //Snipped for length
            }
            elseif($adopt->currentlevel == 5){
                //Snipped for length
            }
        }
 
 
        // This creates the Imagick class that we will use.
        $composed_image = new \Imagick($images);
        $clut = new \Imagick();
        $timestamp = time();
 
        if($adopt->species == "floof"){
            if($adopt->currentlevel == 0){
                $composed_image->setIteratorIndex(0);
                $clut->newImage(1, 1, new \ImagickPixel("$adopt->fluffy_body_colour2")); // Colours the fluffy body colour 2
                $composed_image->clutImage($clut);
                $clut->destroy();
                $composed_image->compositeImage( new \Imagick($images[0]), \Imagick::COMPOSITE_DSTIN, 0, 0 ); // Keeps within colour
                $composed_image->setIteratorIndex(1);
                $clut->newImage(1, 1, new \ImagickPixel("$adopt->fluffy_body_colour1")); // Colours the fluffy body colour 1
                $composed_image->clutImage($clut);
                $clut->destroy();
                $composed_image->compositeImage( new \Imagick($images[1]), \Imagick::COMPOSITE_DSTIN, 0, 0 ); // Keeps within colour
                $composed_image->setIteratorIndex(2);
                $clut->newImage(1, 1, new \ImagickPixel("$adopt->marking_1_colour")); // Colours fluffy body marking 1
                $composed_image->clutImage($clut);
                $clut->destroy();
                $composed_image->compositeImage( new \Imagick($images[2]), \Imagick::COMPOSITE_DSTIN, 0, 0 ); // Keeps within colour
                $composed_image->evaluateImage(\Imagick::EVALUATE_MULTIPLY, $adopt->marking_1_opacity, \Imagick::CHANNEL_ALPHA);
 
            }
            if($adopt->currentlevel == 1){
                $composed_image->setIteratorIndex(0);
                $clut->newImage(1, 1, new \ImagickPixel("$adopt->fluffy_body_colour2")); // Colours the fluffy body colour 2
                $composed_image->clutImage($clut);
                $clut->destroy();
                $composed_image->compositeImage( new \Imagick($images[0]), \Imagick::COMPOSITE_DSTIN, 0, 0 ); // Keeps within colour
                $composed_image->setIteratorIndex(1);
                $clut->newImage(1, 1, new \ImagickPixel("$adopt->fluffy_body_colour1")); // Colours the fluffy body colour 1
                $composed_image->clutImage($clut);
                $clut->destroy();
                $composed_image->compositeImage( new \Imagick($images[1]), \Imagick::COMPOSITE_DSTIN, 0, 0 ); // Keeps within colour
                $composed_image->setIteratorIndex(2);
                $clut->newImage(1, 1, new \ImagickPixel("$adopt->marking_1_colour")); // Colours body marking 1
                $composed_image->clutImage($clut);
                $clut->destroy();
                $composed_image->compositeImage( new \Imagick($images[2]), \Imagick::COMPOSITE_DSTIN, 0, 0 ); // Keeps within colour
                $composed_image->evaluateImage(\Imagick::EVALUATE_MULTIPLY, $adopt->marking_1_opacity, \Imagick::CHANNEL_ALPHA);
            }
            if($adopt->currentlevel == 2){
                $composed_image->setIteratorIndex(0);
                $composed_image->setImageBackgroundColor('transparent');
               //Snipped for length
            }
            if($adopt->currentlevel == 3){
                $composed_image->setIteratorIndex(0);
                $composed_image->setImageBackgroundColor('transparent');
               //Snipped for length
 
            }
            if($adopt->currentlevel == 4){
                $composed_image->setIteratorIndex(0);
                $composed_image->setImageBackgroundColor('transparent');
               //Snipped for length
 
            }
            if($adopt->currentlevel == 5){
                $composed_image->setIteratorIndex(0);
                $composed_image->setImageBackgroundColor('transparent');
               //Snipped for length
 
            }
        }
 
        $image = $composed_image->mergeImageLayers(\Imagick::LAYERMETHOD_FLATTEN);
        $image->setImageFormat('png');
 
 
        if($adopt->lastupdate >= $adopt->imglastupdate && file_exists('C:\\wamp64\\emotidogs\\online\\picuploads\\adopt_images\\' . $adopt->aid . '.png')){
                    unlink('C:\\wamp64\\emotidogs\\online\\picuploads\\adopt_images\\' . $adopt->aid . '.png');
                }
                else{
                    $mysidia->db->update("owned_adoptables", ["lastupdate" => $timestamp, "imglastupdate" => $timestamp], "aid = '{$adopt->aid}'");
                    $storepath = 'C:\\wamp64\\emotidogs\\online\\picuploads\\adopt_images\\' . $adopt->aid . '.png';
                    $image->writeImage($storepath);
                }
        header('Content-type: image/png');
        echo $image;
    }
}
?>
 
 

0

There are 0 best solutions below