I'm moving to a new server, and my avatar image generation script did not work anymore:
$ php surrogator.php processing mm.svg PHP Fatal error: Uncaught ImagickException: unable to open file `/tmp/magick-bcfNKPgxfBoOcZ5_de_xB9LzxZLhN2Dq': No such file or directory @ error/constitute.c/ReadImage/614 in /home/cweiske/www/avatar.cweiske.de/surrogator.php:236 Stack trace: #0 /home/cweiske/www/avatar.cweiske.de/surrogator.php(236): Imagick->readImage() #1 /home/cweiske/www/avatar.cweiske.de/surrogator.php(155): surrogator\createSquare() #2 {main} thrown in /home/cweiske/www/avatar.cweiske.de/surrogator.php on line 236
The mm.svg file clearly exists, and my user is able to create files in /tmp/ - which I tested with touch /tmp/foo.
Using strace helped me to find the issue:
$ strace php surrogator.php [...] lstat("/usr/lib/x86_64-linux-gnu/ImageMagick-6.9.11/modules-Q16/coders/svg.la", 0x7ffd264c61c0) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden) stat("/usr/lib/x86_64-linux-gnu/ImageMagick-6.9.11//modules-Q16/coders/svg.la", 0x7ffd264c61f0) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden) stat("/tmp/magick-Uoh--TjgMhCveOq8LHbHQyVLXA87cpvx", 0x7ffd264ca2b0) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden) stat("/home/cweiske/www/avatar.cweiske.de/raw/mm.svg", {st_mode=S_IFREG|0644, st_size=3013, ...}) = 0 write(2, "PHP Fatal error: Uncaught Imagi"..., 497PHP Fatal error: Uncaught ImagickException: unable to open file `/tmp/magick-Uoh--TjgMhCveOq8LHbHQyVLXA87cpvx': No such file or directory @ error/constitute.c/ReadImage/614 in /home/cweiske/www/avatar.cweiske.de/surrogator.php:236 [...]
PHP's Imagick extension wants to load the svg.la module that is responsible for loading .svg images, and that fails.
It turned out that I had to install the imagemagick package - php-imagick alone was not enough.