رفع خطای «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 معمولا از قبل روی سرور هست و فقط باید برای اکانت شما فعال شود. این کار از پنل خودتان انجام میشود.
- ورود به پنل هاست وارد سیپنل یا دایرکتادمین شوید.
- باز کردن تنظیمات PHP در سیپنل بخش Select PHP Version و در دایرکتادمین بخش PHP Extensions را باز کنید.
- فعال کردن افزونه تیک گزینه
ioncube_loaderرا بزنید و ذخیره کنید. - بررسی با یک فایل phpinfo مطمئن شوید بخش ionCube ظاهر شده است.
مراحل تصویری و کامل سیپنل در نصب ionCube در سیپنل و دایرکتادمین در نصب در دایرکتادمین آمده است. اگر گزینه اصلا در فهرست نبود، یعنی روی سرور نصب نشده و باید از پشتیبانی هاست بخواهید نصبش کنند.
رفع روی سرور اختصاصی و VPS
روی سروری که کنترلپنل ندارد، باید فایل لودر را دستی اضافه کنید. ترتیب کار مشخص است و چند دقیقه بیشتر طول نمیکشد.
- تشخیص نسخه PHP با
php -vنسخه دقیق را ببینید. - دانلود بسته لودر بسته لینوکس ۶۴بیتی را از سایت رسمی بگیرید و استخراج کنید.
- کپی فایل so فایل متناسب با نسخه (مثلا
ioncube_loader_lin_8.2.so) را در مسیر extension_dir قرار دهید. - افزودن به php.ini خط
zend_extensionرا با مسیر کامل فایل اضافه کنید. - ریاستارت سرویس PHP-FPM یا وبسرور را ریاستارت کنید.
راهنمای کامل با جزئیات اوبونتو و 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 a newer Loader بگیرید و امکان آپدیت لودر سرور وجود نداشته باشد.
روی هاست اشتراکی به php.ini دسترسی ندارم، چه کنم؟
نیازی به دسترسی مستقیم ندارید. از بخش Select PHP Version در سیپنل یا PHP Extensions در دایرکتادمین لودر را فعال کنید.
از کجا بفهمم نسخه لودر و PHP چیست؟
با دستور php -v یا خروجی phpinfo؛ هر دو نسخه PHP و وضعیت و نسخه لودر را نشان میدهند.
خطا فقط در بخشی از سایت ظاهر میشود، چرا؟
احتمالا آن پوشه فایل php.ini اختصاصی یا نسخه PHP متفاوتی دارد. تنظیمات همان مسیر را بررسی کنید.
بعد از فعالسازی چقدر طول میکشد اثر کند؟
در پنل کاربری معمولا بلافاصله. در نصب سمت سرور بعد از ریاستارت PHP-FPM اعمال میشود.
مطالب مرتبط: ionCube Loader چیست؟ · نصب در سیپنل · خطای ناسازگاری نسخه
PHP