【发布时间】:2012-11-14 15:59:17
【问题描述】:
我尝试使用以下代码使用 imagemagick 创建一个 png。
<?php
/* Create some objects */
$image = new Imagick();
$draw = new ImagickDraw();
$pixel = new ImagickPixel( 'gray' );
/* New image */
$image->newImage(800, 75, $pixel);
/* Black text */
$draw->setFillColor('black');
/* Font properties */
$draw->setFont('Oxin_free_promo.ttf');
$draw->setFontSize( 30 );
/* Create text */
$image->annotateImage($draw, 10, 45, 0, 'The quick brown fox jumps over the lazy dog');
/* Give image a format */
$image->setImageFormat('png');
/* Output the image with headers */
header('Content-type: image/png');
echo $image;
但我不断收到以下错误。 /usr/local/zend/tmp/ 被修改为 777 并由 daemon:zend 拥有,而 magick-* 不存在。有什么想法吗?
httpd: FreeType library is not available `/Users/gareth.williams/Sites/_tests/texttoimg/Oxin_free_promo.ttf'.
httpd: Postscript delegate failed `/usr/local/zend/tmp/magick-tmfNBDIx': No such file or directory.
PHP Fatal error: Uncaught exception 'ImagickException' with message 'Unable to annotate image'
【问题讨论】:
-
您的网络服务器的用户 ID 是否对该 ../tmp 文件夹具有写入权限?
-
试试这个:sudo chmod 777 /usr/local/zend/tmp/
-
在更改服务器设置之前,您应该尝试找出为什么 Imagick 创建一个临时文件而不是只在内存中工作!
-
@aykut chmod 没用,权限已经差不多了
-
取决于您运行脚本的方式。如果它在网络服务器下,那么运行网络服务器的用户 ID 需要具有访问权限。如果它是命令行,那么它将在运行该 shell 的任何人的 ID 下运行。
标签: php macos imagemagick zend-server