در هنگام اجرای سایتهای مبتنی بر 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 نیست.

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 در سرور خود:
- فایل جدیدی به نام
phpinfo.phpبسازید. - درون آن بنویسید:
<?php phpinfo(); ?> - خروجی را باز کنید و به بخش 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 
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 هستند تا فرآیند عیبیابی برای شما سادهتر و کاربردیتر شود.

5-1 مدل اول: خطای php_admin_flag در cPanel
در سرورهای cPanel که از suPHP یا FPM استفاده میکنند، فایل
.htaccess از دستورات php_admin_flag پشتیبانی نمیکند. در این حالت باید از MultiPHP INI Editor استفاده کنید.5-2 مدل دوم: خطا در Apache محلی (XAMPP)
اگر از XAMPP استفاده میکنید و با این خطا مواجه میشوید:
- فایل
httpd.confرا باز کنید. - به دنبال خط زیر بگردید:
LoadModule php_module modules/php8_module.so - اگر وجود ندارد، مسیر درست فایل PHP را اضافه کنید.
- 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 استفاده میکند.




