I'm trying to manage some PDFs using Imagemagick from PHP, using exec()
. I've simplified down my test case, and found that while PDFs are fine from the command line, they're not working in PHP.
From the command line:
$ identify /var/tmp/doc-98563.png
/var/tmp/doc-98563.png PNG 2550x3300 2550x3300+0+0 8-bit Gray 256c 1.24178MiB 0.000u 0:00.009
$ identify /var/tmp/doc-35765.pdf
/var/tmp/doc-35765.pdf[0] PDF 419x595 419x595+0+0 16-bit ColorSeparation CMYK 997321B 0.120u 0:00.119
/var/tmp/doc-35765.pdf[1] PDF 419x595 419x595+0+0 16-bit ColorSeparation CMYK 997321B 0.110u 0:00.109
Great! Correctly identifies my files, PNG or PDF.
I can also confirm permissions are just fine on the files:
$ ls -la /var/tmp/doc*
-rw-r--r-- 1 _www wheel 1.6M 15 May 10:05 /var/tmp/doc-35765.pdf
-rw-r--r-- 1 _www wheel 1.2M 15 May 10:01 /var/tmp/doc-98563.png
Running the equivalent from PHP...
exec('identify /var/tmp/doc-98563.png', $output, $exitcode);
var_dump($output);
var_dump($exitcode);
unset($output);
exec('identify /var/tmp/doc-35765.pdf', $output, $exitcode);
var_dump($output);
var_dump($exitcode);
...produces different results:
array(1) {
[0]=>
string(93) "/var/tmp/doc-98563.png PNG 2550x3300 2550x3300+0+0 8-bit Gray 256c 1.24178MiB 0.000u 0:00.000"
}
int(0)
array(0) {
}
int(1)
So the PNG works identically from both places (as is expected), but the PDF just... doesn't.
I've checked convert -version
and convert -list format
on both, and both are identical (ImageMagick 7.0.7-32, PDF PDF rw+ Portable Document Format
). I've also specific the full path /usr/local/bin/identify ...
to verify it's definitely running the same instance of IM. File permissions are identical for everything I can see related to PDF vs PNG, so don't think it's that.
Running gs
DOES work fine from PHP with the same file, but gs doesn't do what I need.
Anything else I can try?
For reference, I'm on OSX using PHP7.2, and both it and ImageMagick (and Ghostscript) are installed with Brew.