Я установил pngquant на mac и на linux под управлением centos 7. На обеих машинах я могу использовать его с командной строкой, но если он не сработает, когда та же команда запускается в php.
Linux команды, которые я пробовал:
yum install pngquant
говорит, что он успешно установлен pngquant
which pngquant
возвращается /usr/bin/pngquant
код моего php файла ptst.php:
<?php
echo "start";
echo $get_compress = exec("find . -name '*.png' -exec /usr/bin/pngquant -ext .png -force 256 {} \;");
echo "end";
?>
У меня есть только 1 файл PNG в текущей папке: image_5.png
, У него есть разрешения: -rwxrwxrw-
и находится в той же папке, что и ptst.php
при использовании ls -la
Я вижу, что размер файла не изменился. Отголосок просто startend
,
Если я запускаю тот же код в Терминале, размер файла изменяется на 1/3 от его предыдущего размера.
Что я делаю неправильно? Ясно, что есть некоторые проблемы, о которых я не знаю.
РЕДАКТИРОВАТЬ:
новая команда:
echo $get_compress = exec("find . -name '*.png' -exec /usr/bin/pngquant --ext .png --force 256 {} \; 2>&1", $output);
print_r($output);
вывод немного более нагляден;
'./image_5.png.tmp' for writingArray ( [0] => error: cannot open './image_5.png.tmp' for writing )
использование sudo
и это сработает. Работал на меня.
Других решений пока нет …