افزونه Imagick یکی از مهمترین ابزارهای پردازش تصویر در PHP است که برای بسیاری از CMSها مانند وردپرس، مجنتو و لاراول ضروری میباشد. در این آموزش، روش نصب و فعالسازی ImageMagick و افزونه php-imagick روی اوبونتو را به صورت گام به گام توضیح میدهیم.
پیشنیازها
قبل از شروع نصب، اطمینان حاصل کنید که:
- دسترسی root یا sudo به سرور اوبونتو دارید
- PHP روی سرور نصب است (در این آموزش از PHP 8.x استفاده میکنیم)
- وبسرور (Apache یا Nginx) نصب و پیکربندی شده است
نصب ImageMagick
ابتدا لیست پکیجها را بهروزرسانی کرده و سپس ImageMagick را نصب میکنیم:
sudo apt update
sudo apt install imagemagick -y
پس از نصب، میتوانید نسخه نصب شده را بررسی کنید:
convert --version
خروجی باید چیزی شبیه این باشد:
Version: ImageMagick 6.9.11-60 Q16 x86_64 2022-07-21 https://imagemagick.org
Copyright: (C) 1999-2022 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI OpenMP(4.5)
Delegates (built-in): bzlib cairo fontconfig freetype jng jpeg lcms lqr ltdl lzma openexr pangocairo png tiff webp x xml zlib
نصب افزونه PHP Imagick
حالا افزونه PHP Imagick را نصب میکنیم. نام پکیج به نسخه PHP شما بستگی دارد. برای PHP 8.1، دستور زیر را اجرا کنید:
sudo apt install php8.1-imagick -y
اگر از نسخه دیگری از PHP استفاده میکنید، عدد نسخه را متناسباً تغییر دهید (مثلاً php7.4-imagick یا php8.2-imagick).
پس از نصب، سرویس وبسرور خود را ریاستارت کنید:
برای Apache:
sudo systemctl restart apache2
برای Nginx و PHP-FPM:
sudo systemctl restart php8.1-fpm
sudo systemctl restart nginx
تأیید نصب
برای اطمینان از نصب صحیح Imagick، یک فایل PHP با محتوای زیر ایجاد کنید:
<?php
phpinfo();
?>
این فایل را در مسیر قابل دسترس وبسرور ذخیره کرده و به آن دسترسی پیدا کنید. در خروجی phpinfo به دنبال بخش "imagick" بگردید. همچنین میتوانید از دستور زیر استفاده کنید:
php -m | grep imagick
اگر imagick در لیست ظاهر شود، نصب موفقیتآمیز بوده است.
رفع خطاهای رایج
مشکل 1: عدم نمایش Imagick در phpinfo
اگر با وجود نصب، Imagick در phpinfo نمایش داده نمیشود:
- اطمینان حاصل کنید که فایل پیکربندی افزونه ایجاد شده است:
ls -la /etc/php/8.1/mods-available/ | grep imagick
اگر وجود دارد، بررسی کنید که در مسیر مناسب فعال شده باشد:
ls -la /etc/php/8.1/cli/conf.d/ | grep imagick
ls -la /etc/php/8.1/fpm/conf.d/ | grep imagick
اگر وجود ندارد، میتوانید به صورت دستی لینک سمبلیک ایجاد کنید:
sudo ln -s /etc/php/8.1/mods-available/imagick.ini /etc/php/8.1/cli/conf.d/20-imagick.ini
sudo ln -s /etc/php/8.1/mods-available/imagick.ini /etc/php/8.1/fpm/conf.d/20-imagick.ini
مشکل 2: خطای "policy 'pattern' not allowed" در ImageMagick
گاهی ImageMagick به دلایل امنیتی برخی عملیات را محدود میکند. برای رفع این مشکل:
- فایل policy.xml را باز کنید:
sudo nano /etc/ImageMagick-6/policy.xml
خط زیر را پیدا کرده و آن را تغییر دهید یا کامنت کنید:
<!-- <policy domain="path" rights="none" pattern="@*" /> -->
همچنین خط مربوط به محدودیت PDF را پیدا کرده و rights را از "none" به "read|write" تغییر دهید:
<policy domain="coder" rights="read|write" pattern="PDF" />
پس از ذخیره تغییرات، وبسرور را ریاستارت کنید.