رفع خطای «The ionCube PHP Loader needs to be installed»

پیام The ionCube PHP Loader needs to be installed یعنی یک فایل انکدشده اجرا شده اما ionCube Loader روی سرور نصب یا فعال نیست. این یک خطای پیکربندی سرور است، نه خرابی فایل شما؛ بنابراین راه‌حل نصب یا فعال‌سازی لودر است و به هیچ وجه نیازی به انکد مجدد فایل ندارید. در ادامه راه‌حل را برای هاست اشتراکی، سرور اختصاصی و لوکال‌هاست جدا می‌بینید.

این مقاله در یک نگاه

  • خطا مربوط به سرور است، نه فایل انکدشده؛ انکد مجدد لازم نیست.
  • روی هاست اشتراکی معمولا با یک تیک در Select PHP Version حل می‌شود.
  • روی سرور بدون کنترل‌پنل باید فایل so را اضافه و php.ini را ویرایش کنید.
  • اگر پیام needs a newer Loader بود، مشکل نسخه است نه نبود لودر.
  • بعد از هر تغییر، حتما با phpinfo نتیجه را بررسی کنید.

این خطا دقیقا یعنی چه؟

متن کامل خطا معمولا چیزی شبیه این است: «Site error: the file … requires the ionCube PHP Loader … to be installed by the site administrator». ترجمه ساده‌اش این است که PHP با فایلی روبه‌رو شده که نمی‌تواند بخواند، چون آن فایل کد متنی نیست و به مترجم مخصوص نیاز دارد.

مهم است بدانید این پیام هیچ ربطی به سلامت فایل شما ندارد. فایل انکدشده کاملا سالم است و روی هر سروری که لودر داشته باشد بدون مشکل اجرا می‌شود. بنابراین اولین کاری که نباید بکنید، انکد مجدد یا تماس با فروشنده برای فایل جدید است.

علت‌های رایج

چهار سناریو تقریبا همه موارد این خطا را پوشش می‌دهند و تشخیص درست، مسیر حل را کوتاه می‌کند.

علتچقدر رایج استنشانه تشخیص
لودر اصلا نصب نیستبسیار رایجدر phpinfo هیچ بخش ionCube نیست
لودر روی نسخه دیگری از PHP فعال استرایجدر یک نسخه هست و در نسخه فعلی نیست
نسخه لودر قدیمی‌تر از نسل انکدرمتوسطپیام needs a newer Loader
خط zend_extension اشتباه استکمترسرویس PHP بالا نمی‌آید یا لاگ خطا دارد

رفع روی هاست اشتراکی

روی هاست‌های سی‌پنل و دایرکت‌ادمین، ionCube معمولا از قبل روی سرور هست و فقط باید برای اکانت شما فعال شود. این کار از پنل خودتان انجام می‌شود.

  1. ورود به پنل هاست وارد سی‌پنل یا دایرکت‌ادمین شوید.
  2. باز کردن تنظیمات PHP در سی‌پنل بخش Select PHP Version و در دایرکت‌ادمین بخش PHP Extensions را باز کنید.
  3. فعال کردن افزونه تیک گزینه ioncube_loader را بزنید و ذخیره کنید.
  4. بررسی با یک فایل phpinfo مطمئن شوید بخش ionCube ظاهر شده است.

مراحل تصویری و کامل سی‌پنل در نصب ionCube در سی‌پنل و دایرکت‌ادمین در نصب در دایرکت‌ادمین آمده است. اگر گزینه اصلا در فهرست نبود، یعنی روی سرور نصب نشده و باید از پشتیبانی هاست بخواهید نصبش کنند.

رفع روی سرور اختصاصی و VPS

روی سروری که کنترل‌پنل ندارد، باید فایل لودر را دستی اضافه کنید. ترتیب کار مشخص است و چند دقیقه بیشتر طول نمی‌کشد.

  1. تشخیص نسخه PHP با php -v نسخه دقیق را ببینید.
  2. دانلود بسته لودر بسته لینوکس ۶۴بیتی را از سایت رسمی بگیرید و استخراج کنید.
  3. کپی فایل so فایل متناسب با نسخه (مثلا ioncube_loader_lin_8.2.so) را در مسیر extension_dir قرار دهید.
  4. افزودن به php.ini خط zend_extension را با مسیر کامل فایل اضافه کنید.
  5. ری‌استارت سرویس PHP-FPM یا وب‌سرور را ری‌استارت کنید.
php -i | grep extension_dir sudo systemctl restart php8.2-fpm php -v

راهنمای کامل با جزئیات اوبونتو و AlmaLinux در مقاله نصب ionCube روی سرور لینوکس آمده است.

رفع روی لوکال‌هاست

روی XAMPP و WAMP اصول یکسان است، فقط به جای فایل .so از فایل .dll استفاده می‌شود و باید بین نسخه Thread Safe و Non Thread Safe درست انتخاب کنید. مراحل کامل در نصب ionCube Loader در XAMPP توضیح داده شده است.

اگر باز هم خطا داشتید

اگر بعد از فعال‌سازی همچنان خطا می‌بینید، معمولا یکی از این سه حالت است.

نشانهعلت محتملراه‌حل
خطا دقیقا مثل قبل ادامه داردلودر روی نسخه PHP دیگری فعال استنسخه سایت را با نسخه فعال لودر یکی کنید
پیام needs a newer Loaderلودر قدیمی‌تر از نسل انکدر استلودر را آپدیت کنید یا خروجی با نسل پایین‌تر بگیرید
ionCube در phpinfo نیستphp.ini اشتباه ویرایش شدهخط Loaded Configuration File را در phpinfo بررسی کنید

برای درک ریشه‌ای رابطه لودر و انکدر، مقاله ionCube Loader چیست و برای مسائل نسخه، رفع خطای ناسازگاری نسخه کمک‌کننده‌اند. نسخه‌های رسمی هم در صفحه دانلود ionCube موجود است.

جمع بندی: خطای needs to be installed یک مشکل سمت سرور است و با نصب یا فعال‌سازی ionCube Loader حل می‌شود، نه با انکد مجدد فایل. روی هاست اشتراکی معمولا یک تیک در تنظیمات PHP کافی است و روی سرور اختصاصی باید فایل so را اضافه و php.ini را ویرایش کنید. اگر بعد از فعال‌سازی باز هم خطا دیدید، تقریبا همیشه به این دلیل است که لودر روی نسخه‌ای غیر از نسخه فعال سایت نصب شده است.

سوالات متداول

آیا باید فایلم را دوباره انکد کنم؟

خیر. این خطا مربوط به پیکربندی سرور است نه فایل. فقط کافی است لودر را نصب یا فعال کنید. تنها استثنا وقتی است که پیام needs a newer Loader بگیرید و امکان آپدیت لودر سرور وجود نداشته باشد.

روی هاست اشتراکی به php.ini دسترسی ندارم، چه کنم؟

نیازی به دسترسی مستقیم ندارید. از بخش Select PHP Version در سی‌پنل یا PHP Extensions در دایرکت‌ادمین لودر را فعال کنید.

از کجا بفهمم نسخه لودر و PHP چیست؟

با دستور php -v یا خروجی phpinfo؛ هر دو نسخه PHP و وضعیت و نسخه لودر را نشان می‌دهند.

خطا فقط در بخشی از سایت ظاهر می‌شود، چرا؟

احتمالا آن پوشه فایل php.ini اختصاصی یا نسخه PHP متفاوتی دارد. تنظیمات همان مسیر را بررسی کنید.

بعد از فعال‌سازی چقدر طول می‌کشد اثر کند؟

در پنل کاربری معمولا بلافاصله. در نصب سمت سرور بعد از ری‌استارت PHP-FPM اعمال می‌شود.

مطالب مرتبط: ionCube Loader چیست؟ · نصب در سی‌پنل · خطای ناسازگاری نسخه