Unable to read file? (Imagick issue)

Forum
Last Post
Threads / Messages

Dinocanid

Member
Member
Joined
Aug 30, 2016
Messages
520
Points
18
Age
23
Location
Maryland, USA
Mysidian Dollar
43,334
I heard that Mysidiahost allowed Imagick, so I decided to upload my site so I could work on online features. The only problem is that I get a nasty "failed to read file" error when I try. I also get this:
trict Standards: Only variables should be passed by reference in /home/wildsoul/public_html/wolfimage.php on line 10
I usually don't worry about strict standards and make them invisible, but doing that this time doesn't solve anything. This is the code in question:
PHP:
<?php
class WolfimageController extends AppController{
	//error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE);
	public function index(){
// Lets setup the database.
$mysidia = Registry::get("mysidia");

//A not-so-clean way to get the wid of the parent page
$fullurl = $_SERVER['HTTP_REFERER'];
$cleanwid  = end(explode('/',trim($fullurl,'/')));

$pet = $mysidia->db->select("wolves", array(), "wid='$cleanwid'")->fetchObject();

// Remember to order these in reverse, the last element in the array should always be the top layer you will see (usually lineart). All images should be the same dimensions. The first element in the array is [0], not [1]!!!!
$images = array(
    'http://wild-souls.mysidiahost.com/picuploads/den.png',
	"http://wild-souls.mysidiahost.com/picuploads/wolf_images/pup/bases/" . $pet->base . " base-pup.png",
	'http://wild-souls.mysidiahost.com/picuploads/wolf_images/pup/markings/' . $pet->marking1 . '-pup.png',
	'http://wild-souls.mysidiahost.com/picuploads/wolf_images/pup/eyes/eyes ' . $pet->eyes . '-pup.png',
	'http://wild-souls.mysidiahost.com/picuploads/wolf_images/pup/shade-pup.png',
	'http://wild-souls.mysidiahost.com/picuploads/wolf_images/pup/lineart-pup.png'
);

// This creates the Imagick class that we will use.
$composed_image = new \Imagick($images);

// Base
$composed_image->setIteratorIndex(2);
$composed_image->compositeImage( new \Imagick($images[1]), \Imagick::COMPOSITE_DSTIN, 0, 0 );
$composed_image->setIteratorIndex(4);
$composed_image->compositeImage( new \Imagick($images[1]), \Imagick::COMPOSITE_DSTIN, 0, 0 );

// As you see above, by calling setIteratorIndex(), you switch your "working layer" to the layer you wish to modify.
// Now lets flatten it and display it. This creates a new Imagick instance to work with with only one flat image.
$image = $composed_image->mergeImageLayers(\Imagick::LAYERMETHOD_FLATTEN);
$image->setImageFormat('png');

header('Content-type: image/png');
echo $image->getImageBlob();
	}
}
?>
I have to use the full URL since the Imagick version seems to have issues with relative paths. I had to install the plugin myself during local testing, so I'm not sure if mysidiahost calls imagick differently.
 
After reading through it, I'm not entirely sure what the answer is saying to do. So I would break this line (line 10):
PHP:
$cleanwid  = end(explode('/',trim($fullurl,'/')));
Into more variables?

EDIT: Nevermind, I got rid of the strict standard error by doing this:
PHP:
//A not-so-clean way to get the wid of the parent page
$fullurl = $_SERVER['HTTP_REFERER'];
$scrub = explode('/',trim($fullurl,'/'));
$cleanwid  = end($scrub);

It still doesn't fix the "failed to read file" issue though. I already contacted HoF about it, and he said it might be an issue with the server and not imagick (which is beyond my control). He's looking into it.
 
Last edited:
That's not the problem, since it was commented out (so the file would ignore it anyway). I removed it after I fixed the strict standard, and nothing changed.
 

Similar threads

Users who are viewing this thread

  • Forum Contains New Posts
  • Forum Contains No New Posts

Forum statistics

Threads
4,267
Messages
33,049
Members
1,602
Latest member
BerrieMilk
BETA

Latest Threads

Latest Posts

Top