راهنمای کامل ساخت پلاگین در DirectAdmin: ساختار پلاگین، اجرای PHP با php.ini اختصاصی، مدیریت GET/POST و استفاده از قالب‌های سفارشی

این مقاله یک راهنمای جامع برای توسعه پلاگین در DirectAdmin است. شامل ساختار پلاگین، نحوه اجرای PHP با php.ini اختصاصی، نحوه استفاده از GET و POST در پلاگین‌ها، نکات رفع اشکال، و استفاده از قالب اختیاری plugin_iframe.html برای کنترل کامل خروجی.

Writing Plugins in DirectAdminPHP Handling

~3 min read • Updated Mar 1, 2026

1. مقدمه‌ای بر سیستم پلاگین DirectAdmin


سیستم پلاگین DirectAdmin به توسعه‌دهندگان اجازه می‌دهد قابلیت‌های جدیدی را به کنترل‌پنل اضافه کنند. یک پلاگین در واقع مجموعه‌ای از فایل‌هاست که شامل اسکریپت‌ها، قالب‌ها و hookهایی است که در رابط کاربری DirectAdmin ادغام می‌شوند.

برای شروع، DirectAdmin یک نمونه پلاگین آماده ارائه می‌دهد:

  • hello_world.tar.gz — نمونه‌ای ساده برای آشنایی با ساختار پلاگین.

پلاگین‌ها می‌توانند:

  • لینک‌های جدید به منوهای DirectAdmin اضافه کنند
  • اسکریپت‌های سفارشی اجرا کنند
  • خروجی خام یا فایل ارسال کنند
  • هدر و فوتر پیش‌فرض DirectAdmin را حذف کنند
  • کنترل کامل روی headerها و socket داشته باشند
---

2. اجرای PHP با php.ini اختصاصی


اگر پلاگین شما نیاز به php.ini اختصاصی دارد، می‌توانید آن را در خط shebang مشخص کنید.

2.1 اجرای PHP با php.ini سفارشی


#!/usr/local/bin/php -nc /usr/local/directadmin/plugins/NAME/yourphp.ini

نکته مهم: گزینه -n باعث می‌شود PHP فایل php.ini اصلی سیستم را بارگذاری نکند و از بارگذاری دوباره ماژول‌ها جلوگیری می‌کند.

2.2 اجرای PHP بدون هیچ php.ini


#!/usr/local/bin/php -n

این حالت فقط از تنظیمات داخلی PHP استفاده می‌کند.

2.3 رفع اشکال shebang

اگر اسکریپت اجرا نشد، احتمالاً فایل در حالت DOS ذخیره شده است. تبدیل کنید:


yum install dos2unix
dos2unix index.html
---

3. استفاده از $_GET و $_POST در پلاگین‌ها


پلاگین‌های DirectAdmin با PHP CLI اجرا می‌شوند (/usr/local/bin/php) و به‌صورت پیش‌فرض آرایه‌های $_GET و $_POST را پر نمی‌کنند.

برای بازسازی این آرایه‌ها از متغیرهای محیطی DirectAdmin استفاده کنید:


// Build $_GET
$_GET = Array();
$QUERY_STRING = getenv('QUERY_STRING');
if ($QUERY_STRING != "") {
    parse_str(html_entity_decode($QUERY_STRING), $get_array);
    foreach ($get_array as $key => $value) {
        $_GET[urldecode($key)] = urldecode($value);
    }
}

// Build $_POST
$_POST = Array();
$POST_STRING = getenv('POST');
if ($POST_STRING != "") {
    parse_str(html_entity_decode($POST_STRING), $post_array);
    foreach ($post_array as $key => $value) {
        $_POST[urldecode($key)] = urldecode($value);
    }
}

با این روش، پلاگین شما مانند یک اسکریپت PHP معمولی رفتار خواهد کرد.

---

4. قالب اختیاری plugin_iframe.html


اگر پلاگین شما از گزینه زیر استفاده کند:

iframe=yes

DirectAdmin به‌صورت پیش‌فرض خروجی را داخل یک iframe قرار می‌دهد. برای کنترل کامل HTML iframe، می‌توانید قالب زیر را ایجاد کنید:

/usr/local/directadmin/data/templates/custom/plugin_iframe.html

نمونه قالب:




    
    


    
|OUTPUT|

این قالب برای دیباگ یا طراحی سفارشی بسیار کاربردی است.

---

5. جمع‌بندی


سیستم پلاگین DirectAdmin بسیار سبک، منعطف و قدرتمند است. با ترکیب موارد زیر:

  • اسکریپت‌های سفارشی
  • اجرای PHP با تنظیمات اختصاصی
  • بازسازی GET/POST
  • قالب‌های سفارشی مانند plugin_iframe.html

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

Written & researched by Dr. Shahin Siami