انکد کل پروژه و پوشههای PHP یکجا
وقتی پروژهای چند صد فایل دارد، انکد تکتک فایلها نه عملی است و نه اقتصادی. انکد کل پروژه یعنی یک بار پروژه را به صورت ZIP آپلود کنید، مسیرهایی که نباید انکد شوند را کنار بگذارید و خروجی با همان ساختار پوشهبندی تحویل بگیرید. در این مقاله روش عملی و نکاتی که جلوی خرابی ساختار را میگیرد مرور میکنیم.
این مقاله در یک نگاه
- پروژه را به صورت ZIP با ساختار پوشهای اصلی آپلود کنید.
- مسیرهای vendor و node_modules و تست را از قبل حذف کنید.
- ساختار پوشهها در خروجی دقیقا حفظ میشود.
- فقط فایلهای PHP انتخابشده پردازش میشوند و بقیه دستنخورده میمانند.
- هزینه بر اساس تعداد فایلهای انکدشده محاسبه میشود، نه حجم پروژه.
چرا انکد گروهی؟
در یک پروژه واقعی، فایلها به هم وابستهاند. کلاسها همدیگر را فراخوانی میکنند، فایلها include میشوند و ساختار پوشهها معنا دارد. انکد تکتک و دستی هم زمانبر است و هم احتمال خطای انسانی بالایی دارد.
انکد گروهی این مشکل را حل میکند: پروژه را با ساختار کاملش میفرستید و خروجی با همان ساختار برمیگردد. مسیرهای نسبی، include و require و autoload همه دستنخورده باقی میمانند چون فقط محتوای فایلها عوض میشود، نه جای آنها.
آمادهسازی پروژه قبل از آپلود
چند دقیقه وقت گذاشتن برای پاکسازی پروژه، هم هزینه را کم میکند و هم از مشکلات بعدی جلوگیری میکند.
- پشتیبانگیری کامل یک نسخه از سورس اصلی را جای امن نگه دارید؛ خروجی قابل بازگشت نیست.
- حذف مسیرهای غیرضروری پوشههای vendor، node_modules، تست و مستندات توسعه را حذف کنید.
- جدا کردن فایلهای تنظیمات فایل config را مشخص کنید تا انکد نشود.
- بررسی فراخوانی داینامیک اگر جایی نام کلاس یا تابع به صورت رشته ساخته میشود، مبهمسازی را برای آن بخش غیرفعال کنید.
- ساخت فایل ZIP پروژه را با حفظ ساختار پوشهها فشرده کنید.
کدام مسیرها را کنار بگذاریم؟
| مسیر | وضعیت | دلیل |
|---|---|---|
| vendor یا کتابخانههای شخص ثالث | حذف یا کنار گذاشتن | کد شما نیست و انکدش هم بیفایده و هم پرهزینه است |
| node_modules | حذف کامل | اصلا PHP نیست و حجم زیادی دارد |
| tests و phpunit | حذف کامل | نباید در بسته نهایی باشد |
| config و env | کنار گذاشتن از انکد | مشتری باید ویرایش کند |
| public و assets | کنار گذاشتن از انکد | فایلهای استاتیکاند |
| storage و logs | حذف محتوا | داده موقت است |
ساختار خروجی
خروجی دقیقا همان ساختار پوشهای ورودی را دارد. فایلهایی که انتخاب کردهاید انکد میشوند و بقیه بدون تغییر در جای خودشان میمانند. این یعنی میتوانید کل پوشه خروجی را مستقیم جایگزین پروژه اصلی روی سرور کنید.
خروجی به صورت یک فایل ZIP در پنل کاربری قرار میگیرد. توجه کنید که فایلهای خروجی پس از هفت روز از سرور پاک میشوند، پس بلافاصله دانلود و در جای امن نگهداری کنید.
تست پروژه انکدشده
تست پروژه بزرگ با تست یک فایل تفاوت دارد. چند مسیر بحرانی را حتما بررسی کنید.
اول نصب و راهاندازی اولیه: اگر پروژه نصاب دارد، فرایند نصب را از صفر اجرا کنید. دوم مسیرهای اصلی کاربری: ورود، ثبتنام و عملیات کلیدی. سوم بخشهایی که فراخوانی داینامیک دارند: اگر کدتان از call_user_func یا نام کلاس رشتهای استفاده میکند، اینها بیشترین احتمال مشکل را با مبهمسازی دارند.
محیط تست باید ionCube Loader داشته باشد؛ راهنمای نصب روی XAMPP یا سرور لینوکس در دسترس است. برای انتخاب دقیق فایلها هم کدام فایلها را نباید انکد کرد را ببینید. اطلاعات فنی رسمی در سایت ionCube موجود است.
سوالات متداول
ساختار پوشهها در خروجی حفظ میشود؟
بله. خروجی دقیقا همان ساختار ورودی را دارد و میتوانید آن را مستقیم جایگزین پروژه روی سرور کنید.
کتابخانههای Composer را هم انکد کنم؟
خیر. کد شما نیستند، ارزش محافظتی ندارند و هزینه اضافه ایجاد میکنند. آنها را از انکد کنار بگذارید.
هزینه بر اساس حجم پروژه است یا تعداد فایل؟
بر اساس تعداد فایلهایی که واقعا انکد میشوند. حجم پروژه تأثیری در قیمت ندارد.
پروژه لاراول را میتوانم انکد کنم؟
بله. فقط پوشه vendor و فایلهای تنظیمات را کنار بگذارید و بعد از انکد، مسیرهای اصلی و کش را تست کنید.
اگر بعضی فایلها خطا بخورند چه میشود؟
فایلهای موفق تحویل داده میشوند و هزینه فایلهای ناموفق به کیف پول شما بازمیگردد.
مطالب مرتبط: کدام فایلها را انکد نکنیم · آموزش انکد فایل PHP · خطاهای بعد از انکد
PHP