Php XAMPP上的ImageMagick正在加载和执行,但未读取文件

Php XAMPP上的ImageMagick正在加载和执行,但未读取文件,php,windows,apache,xampp,imagemagick,Php,Windows,Apache,Xampp,Imagemagick,我的Web服务器安装了ImageMagick并可用(并且工作正常),因此我想利用它。为此,我需要在本地主机上运行它来测试代码,等等 我使用的是当前版本的XAMPP(版本5.6.14),在Windows 8.1上使用Apache/2.4.17(Win32)和PHP/5.6.16 要在本地安装ImageMagick,我在根目录下创建了以下目录: c:\ImageMagick 然后,从这里开始: …我下载了与DLL匹配的X86线程安全版本(您必须单独获取,这让我感到困惑)。我下载的版本是: Imag

我的Web服务器安装了ImageMagick并可用(并且工作正常),因此我想利用它。为此,我需要在本地主机上运行它来测试代码,等等

我使用的是当前版本的XAMPP(版本5.6.14),在Windows 8.1上使用Apache/2.4.17(Win32)和PHP/5.6.16

要在本地安装ImageMagick,我在根目录下创建了以下目录:

c:\ImageMagick

然后,从这里开始:

…我下载了与DLL匹配的X86线程安全版本(您必须单独获取,这让我感到困惑)。我下载的版本是:

ImageMagick-6.9.1-2-vc11-x86.zip

我将其解压缩到C:\ImageMagick,然后将其“bin”子文件夹的内容移动到C:\ImageMagick,以便所有内容都位于该目录的根目录中

然后,我将C:\ImageMagick添加到我的路径中,并通过首先从另一个目录的命令行执行“convert”来验证它是否有效,然后显示帮助屏幕信息。然后,通过从命令行成功执行图像大小调整,我进一步验证了它的有效性。到目前为止还不错

然后,根据从其他在线帖子中挑选的关于如何执行此操作的建议,我将CORE_RL_.DLL文件和IM_MOD_RL.DLL文件从C:\ImageMagick复制到C:\xampp\apache\bin

然后我添加了这个系统环境变量:

MAGICK_HOME=c:\imagemagick
下一步是将php_imagemagick.dll添加到XAMPP中的php\ext文件夹中,但imagemagick ZIP文件/EXEs中没有这样的dll。为了得到它,我必须走到这里:

…下载:

php_imagick-3.3.0rc2-5.6-ts-vc11-x86.zip

…然后我将其解压缩到一个专用的“垃圾”目录,并将其中包含的php_imagemagick.dll文件复制到c:\xampp\php\ext

然后,我在c:\xampp\php中编辑了php.ini文件,以包含以下指令:

extension=php_imagemagick.dll
现在…关键时刻:

我启动了XAMPP并检查了PHP_错误日志,没有发现任何错误。然后我运行PhpInfo.php并确认ImageMagick已加载;以下是屏幕截图:

现在,当从my live server(DreamHost)运行以下脚本时,它将成功转换X.JPG图像,如图所示:

<?php
if (!extension_loaded('imagick')) {
    echo "imagick not installed...";
} else {
    echo "imagick installed...";
}
echo "Start...";
$uploaded_filename = "x.jpg";
$im = new Imagick();
echo "Created object...";
$im->readImage("x.jpg");
echo "Read JPG...";
$im->resizeImage(528, 0, Imagick::FILTER_LANCZOS2SHARP, 1);
$im->stripImage();
$im->writeImage("x_lg.jpg");
$im->clear();
$im->destroy(); 
echo "Done."
?>

但是,当我从本地主机运行它时,它会创建$im(ImageMagick对象),但它不会继续使用readImage()函数读取图像(“Created object…”会写入屏幕,但除此之外没有任何内容,也不会创建输出文件。)


关于我在安装过程中遗漏了什么,有什么建议吗?

结果表明,ImageMagick需要图像文件的完整路径,即使它们与在其上执行ImageMagick的脚本位于同一目录中。就这么简单。以下是如何做到这一点:

假设您的图像保存在网站根目录下的“图像”文件夹中。在XAMPP localhost上,完整路径可能是:

C:/xampp/htdocs/mysite/images/x.jpg

因此:

将其与以下字符串放在一起:

$my_image = $_SERVER['DOCUMENT_ROOT'] . "/" . $path_to_your_files . $image_file_name;
$my_image = $_SERVER['DOCUMENT_ROOT'] . "/" . $path_to_your_files . $image_file_name;
在live server上,完整路径可能是:

/你的网站/mysite.com/images/x.jpg的超级文件夹

因此:

再次,将其与以下字符串放在一起:

$my_image = $_SERVER['DOCUMENT_ROOT'] . "/" . $path_to_your_files . $image_file_name;
$my_image = $_SERVER['DOCUMENT_ROOT'] . "/" . $path_to_your_files . $image_file_name;

这就是必须输入新Imagick($my_image)的内容以使其工作。我希望这能帮助其他人解决这个问题。

有关完整路径,您可以使用:

realpath('images/x.jpg') 
而不是

C:/xampp/htdocs/mysite/images/x.jpg