انکد کل پروژه و پوشه‌های PHP یک‌جا

وقتی پروژه‌ای چند صد فایل دارد، انکد تک‌تک فایل‌ها نه عملی است و نه اقتصادی. انکد کل پروژه یعنی یک بار پروژه را به صورت ZIP آپلود کنید، مسیرهایی که نباید انکد شوند را کنار بگذارید و خروجی با همان ساختار پوشه‌بندی تحویل بگیرید. در این مقاله روش عملی و نکاتی که جلوی خرابی ساختار را می‌گیرد مرور می‌کنیم.

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

  • پروژه را به صورت ZIP با ساختار پوشه‌ای اصلی آپلود کنید.
  • مسیرهای vendor و node_modules و تست را از قبل حذف کنید.
  • ساختار پوشه‌ها در خروجی دقیقا حفظ می‌شود.
  • فقط فایل‌های PHP انتخاب‌شده پردازش می‌شوند و بقیه دست‌نخورده می‌مانند.
  • هزینه بر اساس تعداد فایل‌های انکدشده محاسبه می‌شود، نه حجم پروژه.

چرا انکد گروهی؟

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

انکد گروهی این مشکل را حل می‌کند: پروژه را با ساختار کاملش می‌فرستید و خروجی با همان ساختار برمی‌گردد. مسیرهای نسبی، include و require و autoload همه دست‌نخورده باقی می‌مانند چون فقط محتوای فایل‌ها عوض می‌شود، نه جای آن‌ها.

آماده‌سازی پروژه قبل از آپلود

چند دقیقه وقت گذاشتن برای پاکسازی پروژه، هم هزینه را کم می‌کند و هم از مشکلات بعدی جلوگیری می‌کند.

  1. پشتیبان‌گیری کامل یک نسخه از سورس اصلی را جای امن نگه دارید؛ خروجی قابل بازگشت نیست.
  2. حذف مسیرهای غیرضروری پوشه‌های vendor، node_modules، تست و مستندات توسعه را حذف کنید.
  3. جدا کردن فایل‌های تنظیمات فایل config را مشخص کنید تا انکد نشود.
  4. بررسی فراخوانی داینامیک اگر جایی نام کلاس یا تابع به صورت رشته ساخته می‌شود، مبهم‌سازی را برای آن بخش غیرفعال کنید.
  5. ساخت فایل ZIP پروژه را با حفظ ساختار پوشه‌ها فشرده کنید.

کدام مسیرها را کنار بگذاریم؟

مسیروضعیتدلیل
vendor یا کتابخانه‌های شخص ثالثحذف یا کنار گذاشتنکد شما نیست و انکدش هم بی‌فایده و هم پرهزینه است
node_modulesحذف کاملاصلا PHP نیست و حجم زیادی دارد
tests و phpunitحذف کاملنباید در بسته نهایی باشد
config و envکنار گذاشتن از انکدمشتری باید ویرایش کند
public و assetsکنار گذاشتن از انکدفایل‌های استاتیک‌اند
storage و logsحذف محتواداده موقت است
نکته درباره کتابخانه‌ها کتابخانه‌های متن‌باز مثل بسته‌های Composer را انکد نکنید. اولا کد شما نیستند و ارزش محافظتی ندارند، ثانیا برخی لایسنس‌های متن‌باز محدودیت‌هایی برای توزیع تغییریافته دارند.

ساختار خروجی

خروجی دقیقا همان ساختار پوشه‌ای ورودی را دارد. فایل‌هایی که انتخاب کرده‌اید انکد می‌شوند و بقیه بدون تغییر در جای خودشان می‌مانند. این یعنی می‌توانید کل پوشه خروجی را مستقیم جایگزین پروژه اصلی روی سرور کنید.

خروجی به صورت یک فایل ZIP در پنل کاربری قرار می‌گیرد. توجه کنید که فایل‌های خروجی پس از هفت روز از سرور پاک می‌شوند، پس بلافاصله دانلود و در جای امن نگه‌داری کنید.

تست پروژه انکدشده

تست پروژه بزرگ با تست یک فایل تفاوت دارد. چند مسیر بحرانی را حتما بررسی کنید.

اول نصب و راه‌اندازی اولیه: اگر پروژه نصاب دارد، فرایند نصب را از صفر اجرا کنید. دوم مسیرهای اصلی کاربری: ورود، ثبت‌نام و عملیات کلیدی. سوم بخش‌هایی که فراخوانی داینامیک دارند: اگر کدتان از call_user_func یا نام کلاس رشته‌ای استفاده می‌کند، این‌ها بیشترین احتمال مشکل را با مبهم‌سازی دارند.

محیط تست باید ionCube Loader داشته باشد؛ راهنمای نصب روی XAMPP یا سرور لینوکس در دسترس است. برای انتخاب دقیق فایل‌ها هم کدام فایل‌ها را نباید انکد کرد را ببینید. اطلاعات فنی رسمی در سایت ionCube موجود است.

جمع بندی: انکد کل پروژه با آپلود یک فایل ZIP انجام می‌شود و ساختار پوشه‌ها در خروجی دقیقا حفظ می‌شود. مهم‌ترین کار، پاکسازی پروژه پیش از آپلود است: حذف vendor و node_modules و تست‌ها، و کنار گذاشتن config و assets از انکد. این کار هم هزینه را کم می‌کند و هم از خرابی عملکرد جلوگیری می‌کند. در پایان حتما مسیرهای بحرانی را روی محیطی با لودر تست کنید.

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

ساختار پوشه‌ها در خروجی حفظ می‌شود؟

بله. خروجی دقیقا همان ساختار ورودی را دارد و می‌توانید آن را مستقیم جایگزین پروژه روی سرور کنید.

کتابخانه‌های Composer را هم انکد کنم؟

خیر. کد شما نیستند، ارزش محافظتی ندارند و هزینه اضافه ایجاد می‌کنند. آن‌ها را از انکد کنار بگذارید.

هزینه بر اساس حجم پروژه است یا تعداد فایل؟

بر اساس تعداد فایل‌هایی که واقعا انکد می‌شوند. حجم پروژه تأثیری در قیمت ندارد.

پروژه لاراول را می‌توانم انکد کنم؟

بله. فقط پوشه vendor و فایل‌های تنظیمات را کنار بگذارید و بعد از انکد، مسیرهای اصلی و کش را تست کنید.

اگر بعضی فایل‌ها خطا بخورند چه می‌شود؟

فایل‌های موفق تحویل داده می‌شوند و هزینه فایل‌های ناموفق به کیف پول شما بازمی‌گردد.

مطالب مرتبط: کدام فایل‌ها را انکد نکنیم · آموزش انکد فایل PHP · خطاهای بعد از انکد