نصب ionCube Loader روی سرور اوبونتو و AlmaLinux
برای نصب ionCube Loader روی سرور لینوکس بدون کنترلپنل، نسخه و معماری PHP را مشخص میکنید، بسته لینوکسی مناسب را دانلود میکنید، فایل .so را در مسیر افزونهها میگذارید، خط zend_extension را اضافه میکنید و PHP-FPM را ریاستارت میکنید. کل کار روی اوبونتو، AlmaLinux و Rocky چند دقیقه بیشتر طول نمیکشد.
این مقاله در یک نگاه
- مسیر extension_dir را با دستور php -i پیدا کنید، حدس نزنید.
- فایل .so باید دقیقا با نسخه PHP هماهنگ باشد.
- خط zend_extension را در فایل جدا با پیشوند 00- بگذارید تا قبل از OPcache لود شود.
- برای CLI و FPM هر دو محیط باید تنظیم شود.
- مسیرها در اوبونتو و AlmaLinux متفاوت است.
پیش از شروع: اطلاعاتی که لازم دارید
سه اطلاعات کلیدی قبل از هر کاری باید مشخص شود. حدس زدن هر کدام باعث میشود سرویس PHP بالا نیاید.
دستور اول نسخه دقیق PHP را میدهد، دستور دوم مسیر پوشه افزونهها و دستور سوم فایل php.ini فعال را نشان میدهد. اگر سرور شما چند نسخه PHP دارد، این دستورات را با مسیر کامل همان نسخه اجرا کنید (مثلا /usr/bin/php8.2 -v).
نصب گامبهگام
- دانلود و استخراج بسته بسته لینوکس ۶۴بیتی را از سایت رسمی بگیرید و در مسیر موقت باز کنید.
- انتخاب فایل درست از میان فایلهای استخراجشده، فایل متناسب با نسخه PHP خود را بردارید (مثلا
ioncube_loader_lin_8.2.so). - کپی به مسیر افزونهها فایل را در همان مسیری کپی کنید که در گام قبل با extension_dir پیدا کردید.
- ساخت فایل تنظیمات جدا به جای ویرایش php.ini اصلی، یک فایل ini جدا بسازید تا آپدیتهای سیستم آن را پاک نکنند.
- ریاستارت سرویس PHP-FPM را ریاستارت کنید.
- بررسی نتیجه با
php -vخط ionCube را ببینید.
تفاوت اوبونتو و AlmaLinux
منطق کار یکسان است و فقط مسیرها و نام سرویسها فرق میکند. جدول زیر تفاوتها را نشان میدهد.
| مورد | اوبونتو و دبیان | AlmaLinux و Rocky |
|---|---|---|
| مسیر فایل ini اضافه | /etc/php/8.x/fpm/conf.d/ | /etc/php.d/ |
| نام سرویس | php8.x-fpm | php-fpm |
| مدیر بسته | apt | dnf یا yum |
| مخزن رایج PHP | ppa:ondrej/php | Remi |
ترتیب بارگذاری و OPcache
یکی از نکاتی که اغلب نادیده گرفته میشود، ترتیب بارگذاری افزونههاست. ionCube Loader باید پیش از OPcache بارگذاری شود، وگرنه ممکن است فایلهای انکدشده درست اجرا نشوند.
در سیستمهایی که فایلهای ini را به ترتیب الفبایی میخوانند، نامگذاری فایل با پیشوند 00- این ترتیب را تضمین میکند. برای همین در دستور بالا نام فایل را 00-ioncube.ini گذاشتیم.
تنظیم برای CLI و کرون
روی بیشتر سرورها، PHP خط فرمان (CLI) و PHP-FPM فایلهای ini جداگانه دارند. اگر فقط FPM را تنظیم کنید، اسکریپتهای کرون که با CLI اجرا میشوند همچنان خطا میدهند.
عیبیابی
| نشانه | علت | راهحل |
|---|---|---|
| PHP-FPM بالا نمیآید | فایل so نامتناسب با نسخه | فایل متناسب با نسخه دقیق را جایگزین کنید |
| ionCube در phpinfo نیست | فایل ini در مسیر اشتباه | مسیر conf.d درست را بررسی کنید |
| وب کار میکند ولی کرون خطا میدهد | CLI تنظیم نشده | فایل ini را برای cli هم بسازید |
| needs a newer Loader | نسخه لودر قدیمی است | لودر را بهروزرسانی کنید |
برای درک نقش لودر مقاله ionCube Loader چیست و برای رفع خطای عمومی این راهنما را ببینید. بستههای رسمی در صفحه دانلود ionCube موجود است.
سوالات متداول
چرا باید ionCube قبل از OPcache لود شود؟
چون لودر باید بایتکد را پیش از دخالت OPcache در اختیار بگیرد. نامگذاری فایل ini با پیشوند 00- ترتیب بارگذاری را تضمین میکند.
نسخه فایل so را اشتباه انتخاب کردم، چه میشود؟
PHP-FPM بالا نمیآید و در لاگ خطای بارگذاری zend_extension میبینید. کافی است فایل متناسب با نسخه دقیق PHP را جایگزین کنید.
روی سرور چند نسخه PHP دارم، کدام را تنظیم کنم؟
همان نسخهای که سایت با آن اجرا میشود. با phpinfo یا php -v در همان محیط نسخه را بررسی کنید.
چرا سایت کار میکند ولی کرون خطا میدهد؟
چون PHP خط فرمان فایل ini جداگانه دارد. باید همان خط zend_extension را برای مسیر cli هم اضافه کنید.
بعد از آپدیت PHP باید دوباره نصب کنم؟
بله. با تغییر نسخه اصلی PHP باید فایل so متناسب با نسخه جدید را جایگزین و مسیر را در ini بهروز کنید.
مطالب مرتبط: ionCube Loader چیست؟ · رفع خطای لودر · سازگاری با PHP ۸.۳ و ۸.۴
PHP