# راهنمای نصب و بروزرسانی — PDF Form Generator

---

## پیش‌نیازها

| مورد | حداقل نسخه |
|------|------------|
| PHP | 8.1 |
| MySQL / MariaDB | 5.7 / 10.3 |
| پسوند‌های PHP | `pdo_mysql`, `mbstring`, `gd`, `zip`, `fileinfo`, `curl` |
| Apache / Nginx | هر نسخه با پشتیبانی از `mod_rewrite` یا `try_files` |
| IonCube Loader | 14.x (برای PHP 8.1) |

---

## نصب نسخه کامل (Fresh Install)

### ۱. آپلود فایل‌ها

فایل zip کامل را دانلود و محتویات آن را در پوشه `public_html` یا پوشه مورد نظر روی هاست آپلود کنید.

```
public_html/
├── app/
├── config/
├── database/
├── public/
├── vendor/
└── ...
```

### ۲. ساخت پایگاه داده

در کنترل پنل هاست (cPanel / DirectAdmin) یک پایگاه داده MySQL جدید بسازید و یک کاربر با دسترسی کامل به آن اختصاص دهید.

### ۳. تنظیم فایل کانفیگ

فایل `config/database.php` را ویرایش کنید:

```php
return [
    'host'     => 'localhost',
    'dbname'   => 'نام_دیتابیس',
    'username' => 'نام_کاربری',
    'password' => 'رمز_عبور',
    'charset'  => 'utf8mb4',
];
```

فایل `config/config.php` را ویرایش کنید:

```php
define('APP_URL',  'https://yourdomain.com');
define('APP_NAME', 'نام سیستم');
```

### ۴. اجرای SQL اولیه

فایل `database/schema.sql` را در phpMyAdmin اجرا کنید تا ساختار جداول ساخته شود.

### ۵. تنظیم مجوز پوشه‌ها

```bash
chmod 775 storage/
chmod 775 public/uploads/
chmod 775 public/pdf/
```

### ۶. تنظیم `.htaccess`

مطمئن شوید فایل `public/.htaccess` موجود است و `mod_rewrite` روی سرور فعال است.

برای Nginx، قانون زیر را اضافه کنید:

```nginx
location / {
    try_files $uri $uri/ /index.php?$query_string;
}
```

### ۷. ورود به سیستم

آدرس پیش‌فرض ادمین:

```
https://yourdomain.com/admin
```

اطلاعات ورود پیش‌فرض:

```
ایمیل:    admin@example.com
رمز عبور: admin123
```

> **مهم:** بلافاصله پس از ورود، رمز عبور پیش‌فرض را تغییر دهید.

---

## نصب IonCube Loader

فایل‌های اصلی سیستم با IonCube رمزنگاری شده‌اند. برای اجرا نیاز به IonCube Loader دارید.

### روش نصب روی cPanel

۱. وارد **cPanel → Select PHP Version** شوید  
۲. روی **PHP Extensions** کلیک کنید  
۳. تیک `ioncube_loader` را بزنید و ذخیره کنید  

### بررسی نصب

فایل `phpinfo.php` با این محتوا بسازید:

```php
<?php phpinfo();
```

در خروجی باید عبارت `ionCube PHP Loader` را ببینید.

> اگر هاست شما از IonCube پشتیبانی نمی‌کند، با پشتیبانی هاست تماس بگیرید.

---

## بروزرسانی (Patch Update)

### روش خودکار (توصیه شده)

۱. وارد پنل ادمین شوید  
۲. به **تنظیمات ← بروزرسانی سیستم** بروید  
۳. فایل patch را از سایت دانلود کنید  
۴. فایل zip را آپلود کنید و روی **اعمال بروزرسانی** کلیک کنید  
۵. سیستم به‌صورت خودکار:
   - از فایل‌های فعلی پشتیبان می‌گیرد
   - فایل‌های جدید را جایگزین می‌کند
   - تغییرات دیتابیس را اعمال می‌کند

### روش دستی

اگر به هر دلیل روش خودکار کار نکرد:

۱. فایل‌های داخل پوشه `pdf-form-generator/` در zip را روی سرور آپلود کنید (فایل‌های قدیمی را جایگزین کنید)  
۲. فایل‌های `database/*.sql` داخل zip را در phpMyAdmin اجرا کنید  

---

## رفع مشکلات رایج

### خطای `Unknown column` بعد از بروزرسانی

اگر بعد از نصب پچ خطای «ستون ناشناخته» دیدید:

- صفحه را یک‌بار **Refresh** کنید — سیستم در اولین بارگذاری، ستون‌های جدید را به‌صورت خودکار می‌سازد
- اگر مشکل ادامه داشت، فایل‌های SQL در پوشه `database/` را به‌صورت دستی در phpMyAdmin اجرا کنید

### خطای Blank Page یا 500

- فایل `config/config.php` و `config/database.php` را بررسی کنید  
- مجوز فایل‌ها را چک کنید (`chmod 644` برای فایل‌های PHP)  
- IonCube Loader را فعال کنید  

### خطای `mod_rewrite` یا 404

- مطمئن شوید `AllowOverride All` در تنظیمات Apache فعال است  
- فایل `.htaccess` موجود باشد  

### خطای دیتابیس (Access Denied)

- اطلاعات `config/database.php` را بررسی کنید  
- مطمئن شوید کاربر دیتابیس به تمام جداول دسترسی `SELECT, INSERT, UPDATE, DELETE, ALTER` دارد  

---

## اطلاعات تماس پشتیبانی

برای دریافت پشتیبانی، اطلاعات زیر را آماده کنید:

- نسخه سیستم (از پنل ادمین ← بروزرسانی)
- نسخه PHP سرور
- متن کامل خطا

