در هنگام اجرای سایت‌های مبتنی بر PHP، ممکن است با خطای php_admin_flag در Apache مواجه شوید؛ خطایی که معمولاً به دلیل ماژول PHP فعال نیست یا ناسازگاری در تنظیمات سرور رخ می‌دهد. برای رفع این خطا باید چند عامل کلیدی را بررسی کنید تا Apache بتواند به درستی تنظیمات PHP را پردازش کند. موارد زیر از مهم‌ترین نکاتی هستند که باید پیش از رفع خطا بررسی شوند:
  • فعال بودن ماژول mod_php در Apache
  • نوع اجرای PHP (mod_php یا PHP-FPM)
  • صحت فایل .htaccess و مجوزهای آن
  • فعال بودن دستور AllowOverride در پیکربندی Apache
  • بررسی مسیر ماژول‌های PHP در فایل httpd.conf

خطای php_admin_flag چیست؟

خطای php_admin_flag یکی از خطاهای شایع در وب‌سرور Apache است که معمولاً هنگام تنظیم یا فعال‌سازی PHP در سطح دایرکتوری با استفاده از فایل .htaccess رخ می‌دهد. این خطا بیان می‌کند که Apache نمی‌تواند دستور php_admin_flag را تفسیر کند زیرا ماژول مربوط به PHP در سرور بارگذاری نشده است. در نتیجه، وب‌سرور قادر به اجرای دستورات مدیریتی PHP در فایل‌های تنظیمات دایرکتوری نیست.
این خطا معمولاً با پیغام زیر همراه است:
Invalid command 'php_admin_flag', perhaps misspelled or defined by a module not included in the server configuration
به زبان ساده‌تر، زمانی که Apache نتواند ماژول PHP یا ماژول‌های مرتبط مانند mod_php یا mod_ruid2 را شناسایی کند، این پیام نمایش داده می‌شود. در واقع وب‌سرور شما نمی‌داند که باید چگونه با این دستور برخورد کند. این موضوع بیشتر در سرورهایی اتفاق می‌افتد که از نسخه‌های جدیدتر PHP (مانند PHP-FPM یا FastCGI) استفاده می‌کنند که دیگر از php_admin_flag پشتیبانی نمی‌کنند.

1- بررسی علت اصلی خطای php_admin_flag

این بخش به شما کمک می‌کند تا درک دقیقی از منشأ خطای php_admin_flag و یا ( ماژول PHP فعال نیست) پیدا کنید و بدانید دقیقاً چه اتفاقی در پشت‌صحنه رخ می‌دهد. در این مرحله باید نوع ارتباط بین Apache و PHP بررسی شود تا مشخص گردد آیا وب‌سرور قادر به شناسایی دستورات php_admin_flag هست یا خیر. معمولاً ریشه این خطا به یکی از موارد زیر برمی‌گردد: در این مرحله لازم است فقط نوع ارتباط بین Apache و PHP و نحوه تفسیر دستورات بررسی شود تا بتوان مسیر دقیق رفع مشکل را تعیین کرد. تمرکز اصلی باید روی شناسایی مدل پردازش PHP (mod_php یا FPM) و تطبیق آن با ساختار پیکربندی سرور باشد تا مشخص شود چرا Apache قادر به اجرای دستورات php_admin_flag نیست.
خطای php_admin_flag

1-1 مفهوم دستور php_admin_flag

php_admin_flag برای تنظیم پارامترهای PHP در سطح سرور یا دایرکتوری استفاده می‌شود. این دستور تنها زمانی قابل‌استفاده است که Apache از ماژول mod_php برای پردازش PHP استفاده کند.

1-2 چرا خطای php_admin_flag رخ می‌دهد؟

خطای “Invalid command ‘php_admin_flag'” به این معنی است که Apache نمی‌تواند این دستور را تشخیص دهد. این معمولاً در یکی از شرایط زیر رخ می‌دهد:
  • ماژول mod_php نصب یا فعال نشده است.
  • سرور از PHP-FPM یا FastCGI استفاده می‌کند.
  • فایل .htaccess در مسیر اشتباهی قرار دارد یا Apache اجازه اجرای آن را ندارد.

1-3 بررسی نوع پردازش PHP

برای شناسایی نوع اجرای PHP در سرور خود:
  1. فایل جدیدی به نام phpinfo.php بسازید.
  2. درون آن بنویسید: <?php phpinfo(); ?>
  3. خروجی را باز کنید و به بخش Server API نگاه کنید.
    • اگر عبارت Apache 2.0 Handler را دیدید، یعنی mod_php فعال است.
    • اگر FPM/FastCGI را مشاهده کردید، باید از روش دیگری استفاده کنید.

2- فعال‌سازی و نصب ماژول PHP در Apache

برای رفع خطای php_admin_flag، یکی از مهم‌ترین مراحل، اطمینان از نصب و فعال بودن ماژول PHP در Apache است. اگر این ماژول فعال نباشد، وب‌سرور قادر به تفسیر دستورات PHP در فایل‌های پیکربندی نخواهد بود. در این بخش به‌صورت کاربردی یاد می‌گیرید چگونه وضعیت ماژول را بررسی، آن را فعال کرده و در صورت نیاز نصب کنید تا ارتباط Apache و PHP بدون خطا برقرار شود.

2-1 بررسی وضعیت mod_php

برای بررسی فعال بودن ماژول PHP دستور زیر را در ترمینال وارد کنید:
apachectl -M | grep php
اگر خروجی خالی بود، یعنی mod_php فعال نیست.

2-2 فعال‌سازی ماژول PHP در Debian/Ubuntu

در توزیع‌های مبتنی بر Debian مانند Ubuntu از دستور زیر استفاده کنید:
sudo a2enmod php8.2
sudo systemctl restart apache2
در صورت نیاز نسخه PHP را مطابق نسخه نصب‌شده خود تغییر دهید.

2-3 فعال‌سازی ماژول PHP در CentOS/RHEL

در سیستم‌های مبتنی بر RHEL مانند CentOS:
sudo yum install php php-apache
sudo systemctl restart httpd
سپس فایل httpd.conf را بررسی کنید و مطمئن شوید خط زیر وجود دارد:
LoadModule php_module modules/libphp.so
خطای php_admin_flag

3- جایگزین php_admin_flag در محیط‌های PHP-FPM یا FastCGI

اگر سرور شما از PHP-FPM استفاده می‌کند، دستورات .htaccess مانند php_admin_flag نادیده گرفته می‌شوند. در این حالت باید از فایل‌های .user.ini استفاده کنید.

3-1 استفاده از فایل .user.ini

در مسیر پروژه یا دایرکتوری موردنظر خود فایل .user.ini ایجاد کرده و دستورات زیر را اضافه کنید:
memory_limit = 256M
upload_max_filesize = 50M
این فایل هر 5 دقیقه توسط PHP خوانده می‌شود و برای هر دایرکتوری قابل تنظیم است.

3-2 پیکربندی تنظیمات در PHP-FPM Pool

در مسیر /etc/php/8.2/fpm/pool.d/www.conf تنظیمات خاص را اضافه کنید:
php_admin_value[memory_limit] = 256M
php_admin_flag[display_errors] = Off
سپس سرویس PHP-FPM را ریستارت کنید:
sudo systemctl restart php8.2-fpm

4- بررسی تنظیمات AllowOverride و مجوزهای فایل .htaccess

گاهی خطای php_admin_flag به دلیل عدم اجازه اجرای فایل .htaccess است.

4-1 فعال کردن AllowOverride

در فایل پیکربندی Apache (مثلاً /etc/apache2/sites-available/000-default.conf) اطمینان حاصل کنید که دستور زیر وجود دارد:
<Directory /var/www/html>
    AllowOverride All
</Directory>
سپس Apache را ریستارت کنید:
sudo systemctl restart apache2

4-2 بررسی سطح دسترسی فایل‌ها

مطمئن شوید فایل .htaccess و مسیرهای والد دارای مجوز مناسب هستند:
sudo chmod 644 /var/www/html/.htaccess
sudo chown www-data:www-data /var/www/html/.htaccess

5- نمونه‌های عملی از سناریوهای مختلف

در این بخش چند نمونه واقعی از بروز خطای php_admin_flag را بررسی می‌کنیم تا کاربران بتوانند بر اساس محیط کاری خود (مانند cPanel، XAMPP یا سرورهای اختصاصی) بهترین روش رفع خطا را انتخاب کنند. این مثال‌ها شامل نحوه بررسی ماژول PHP، تنظیمات فایل htaccess و رفع پیام‌های مرتبط مانند php_admin_flag not found هستند تا فرآیند عیب‌یابی برای شما ساده‌تر و کاربردی‌تر شود.
ماژول PHP فعال نیست

5-1 مدل اول: خطای php_admin_flag در cPanel

در سرورهای cPanel که از suPHP یا FPM استفاده می‌کنند، فایل .htaccess از دستورات php_admin_flag پشتیبانی نمی‌کند. در این حالت باید از MultiPHP INI Editor استفاده کنید.

5-2 مدل دوم: خطا در Apache محلی (XAMPP)

اگر از XAMPP استفاده می‌کنید و با این خطا مواجه می‌شوید:
  1. فایل httpd.conf را باز کنید.
  2. به دنبال خط زیر بگردید: LoadModule php_module modules/php8_module.so
  3. اگر وجود ندارد، مسیر درست فایل PHP را اضافه کنید.
  4. Apache را ریستارت کنید.

نتیجه‌گیری: رفع خطای php_admin_flag

در نهایت می‌توان گفت خطای Invalid command ‘php_admin_flag’, module not included in the server configuration یکی از نشانه‌های عدم تطابق بین تنظیمات Apache و روش اجرای PHP است. اگر از mod_php استفاده می‌کنید، کافی است ماژول PHP را فعال و فایل پیکربندی را بررسی کنید. اما اگر از PHP-FPM یا FastCGI استفاده می‌کنید، باید تنظیمات خود را در فایل‌های .user.ini یا پیکربندی FPM اعمال کنید. رعایت اصول مجوزها و تنظیمات AllowOverride نیز برای جلوگیری از بروز خطاهای مشابه حیاتی است.
💡 نکته نهایی: برای پایداری و امنیت بیشتر سرور، توصیه می‌شود از مدل PHP-FPM استفاده کنید و تنظیمات PHP را به‌صورت مجزا برای هر دامین از طریق Poolها کنترل نمایید.

سوالات متداول از خطای php_admin_flag

1- چرا خطای php_admin_flag در Apache ظاهر می‌شود؟

زیرا ماژول mod_php غیرفعال است یا Apache از PHP-FPM استفاده می‌کند.

نرسی مزداب
نرسی مزداب

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

مقاله‌ها: 70
پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *