تغییر نسخه PHP در لینوکس: راهنمای جامع ارتقا، دانگرید و رفع خطا

من دانش‌آموخته مهندسی نرم‌افزار هستم و در زندگی قبلی برنامه‌نویس وب بودم. این روزها در فعالیت‌های روزمره‌ام زیاد دست به کد نمی‌شوم ولی هنوز عاشق دنیای مهندسی وب و برنامه‌نویسی هستم. سابقه برنامه‌نویسی به زبان‌های #C و Java را دارم و در پروژه‌هایی مشارکت داشته‌ام که ده‌ها هزار کاربر از آن‌ها استفاده کرده‌اند. در حال حاضر مدیر توسعه کسب‌وکار اکسپورت‌کیت هستم و به کسب‌وکارهای دیجیتال و استارتاپ‌های ایرانی کمک می‌کنم وارد بازارهای بین‌المللی شوند.
مدیریت و تغییر نسخه PHP در سرور لینوکس برای ارتقا و دانگرید

تغییر نسخه PHP در سرور، در نگاه اول یک اقدام ساده به نظر می‌رسد اما بر خلاف انتظار، کاری پیچیده‌تر از چند کلیک ساده است. گاهی با یک ارتقای ساده، کل سایت از کار می‌افتد و گاهی هم نیاز به دانگرید هست ولی مشخص نیست چطور باید این کار را بدون ریسک و دردسر انجام داد. 


در این راهنما، نگاهی جامع و دقیق به موضوع تغییر نسخه PHP خواهیم داشت؛ از دلایل ارتقا یا دانگرید گرفته تا اشتباهات رایجی که باید از آن‌ها پرهیز کرد. اگر به‌دنبال روشی سریع و شفاف برای اعمال این تغییرات هستید، ابزاری را به شما معرفی می‌کنیم که امکان مدیریت نسخه PHP، تنظیمات مرتبط و ماژول‌ها را به ساده‌ترین شکل ممکن فراهم می‌سازد.

جدول محتواها

نکاتی که باید قبل از تغییر نسخه PHP رعایت کنید

بررسی نسخه فعلی PHP

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

اگر از پچیم استفاده می‌کنید، کافی است به قسمت مدیریت PHP  پنل کاربری خود بروید و نسخه PHP را در هر دو حالت ممکن بررسی کنید.

با پچیم آشنا شوید!

اگر کاربر پچیم نیستید، وقت بیشتری لازم دارید. باید نسخه PHP را در دو حالت بررسی کنید چون ممکن است با یکدیگر متفاوت باشند: 

  • محیط کامند لاین (CLI): با استفاده از دستور php -v می‌توانید نسخه PHP پیش‌فرض سرور را ببینید. 
  • محیط سایت: یک فایل متنی با نام info.php بسازید،دستور <? ;()php phpinfo?> را در آن کپی کنید و در پوشه اصلی سایت قرار دهید. وقتی فایل را با مرورگر باز کنید، نسخه PHP سایت خود را مشاهده خواهید کرد. 

⚠️ نکته مهم: نسخه PHP در CLI معمولاً مستقل از نسخه‌ای است که وب‌سرور (مثل Apache یا Nginx) استفاده می‌کند و ممکن است متفاوت باشد، چون هرکدام می‌توانند به فایل اجرایی جداگانه‌ای اشاره کنند.

بررسی سازگاری کد قبل از تغییر نسخه PHP

حتماً پیش از تغییر نسخه PHP، از سازگاری کد پروژه خود با نسخه جدید اطمینان حاصل کنید. برخی توابع ممکن است در نسخه‌های جدید حذف شده یا تغییر کرده باشند چون همین موضوع می‌تواند باعث از کار افتادن سایت یا ایجاد خطاهای غیرمنتظره شود. 

برای این کار می‌توانید از ابزار PHPCompatibility استفاده کنید که کد شما را چک می‌کند و موارد استفاده از توابع و دستورهای منسوخ شده را شناسایی می‌کند. 

تهیه بکاپ کامل قبل از هرگونه تغییر

حتی اگر تغییر نسخه به‌درستی انجام شود، ممکن است با مشکلات غیرمنتظره‌ای روبه‌رو شوید که تنها با بازگردانی نسخه قبلی قابل حل باشد. بنابراین قبل از هر اقدامی، تمام فایل‌های پروژه خود (کد PHP، فایل‌های قالب، پلاگین‌ها، آپلودها و…) را در قالب یک فایل ZIP ذخیره کنید و یک خروجی کامل هم از دیتابیس بگیرید. 

امکان تهیه بکاپ کامل در پچیم وجود دارد که تمام فایل‌ها و تنظیمات را در لحظه ذخیره می‌کند. اگر کاربر پچیم نیستید، ابزارهایی مثل Rsync ،Duplicity یا BorgBackup برای تهیه بکاپ قابل استفاده هستند.

انواع روش‌های تغییر نسخه PHP در سرور

تغییر نسخه PHP سرور در پنل پچیم 

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

برای این کار کافی آست: 

  1. وارد پنل کاربری خود شوید.
  2. سرور مورد نظر را انتخاب کنید.
  3. از سایدبار سمت راست، «مدیریت PHP» را انتخاب کنید.

علاوه بر آن، به تنظیمات کاربردی دیگری نیز دسترسی دارید: 

  • حداکثر سایز فایل آپلودی (upload_max_filesize).
  • حداکثر زمان اجرا (max_execution_time).
  • فعال کردن OPache برای افزایش عملکرد.
  • فعال کردن IonCube برای رمزنگاری کدها.
  • فعال کردن Source Guardian برای محافظت از سورس کد.

 

پس از اینکه نسخه PHP مورد نظر خود را نصب کردید، برای اعمال آن روی پروژه موردنظرتان این مسیر را طی کنید: 

  1. سایت‌ها.
  2. انتخاب سایت مورد نظر. 
  3. تنظیمات.
  4. نسخه مورد نظر را انتخاب کنید. 

همه‌چیز در پچیم طوری طراحی شده که مدیریت نسخه PHP بدون پیچیدگی‌های مرسوم انجام شود. 

 

تغییر دستی نسخه PHP در لینوکس 

اگر از پچیم استفاده نمی‌کنید، برای تغییر نسخه PHP باید هم نسخه جدید را نصب کنید و هم آن را به درستی به وب‌سرور (Apache یا Nginx) متصل نمایید. 

وب‌سرورها معمولاً از php-fpm استفاده می‌کنند که نسخه مستقل خودش را دارد و باید جداگانه پیکربندی شود بنابراین آنچه در ترمینال با دستور php -v مشاهده می‌کنید، الزاما نسخه PHP سایت شما نیست. 

قدم اول: نصب نسخه جدید PHP (مثلاً PHP 8.2)

بسته به توزیع لینوکس شما، روش نصب کمی متفاوت است: 

در اوبونتو و دبیان: 

sudo apt update

sudo apt install php8.2 php8.2-fpm php8.2-cli

در CentOS و RHEL: 

ابتدا مخزن EPEL یا Remi را فعال کنید و بعد PHP را نصب کنید. 

sudo dnf install epel-release

sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

sudo dnf module enable php:remi-8.2

sudo dnf install php php-fpm

قدم دوم: پیکربندی وب‌سرور برای استفاده از نسخه جدید

اگر از Apache استفاده می‌کنید: 

ابتدا ماژول PHP قبلی را غیرفعال کنید و ماژول نسخه جدید را فعال کنید:

sudo a2dismod php7.4

sudo a2enmod php8.2

sudo systemctl restart apache2

اگر از Nginx استفاده می‌کنید: 

در فایل کانفیگ سایت (مثلاً /etc/nginx/sites-available/example.com) باید مسیر جدید php-fpm را مشخص کنید:

fastcgi_pass unix:/run/php/php8.2-fpm.sock;

قدم سوم: فعال کردن نسخه جدید در سرویس php-fpm

پس از نصب، مطمئن شوید که php8.2-fpm فعال و در حال اجراست. 

sudo systemctl enable php8.2-fpm

sudo systemctl start php8.2-fpm

همچنین اگر نسخه قبلی هنوز فعال است و دیگر استفاده نمی‌شود:

sudo systemctl disable php8.1-fpm

sudo systemctl stop php8.1-fpm

قدم چهارم: تغییر نسخه PHP در CLI با update-alternatives (اختیاری)

اگر قصد دارید در ترمینال به‌صورت پیش‌فرض از نسخه جدید PHP استفاده کنید، می‌توانید با ابزار update-alternatives نسخه CLI را تنظیم کنید:

sudo update-alternatives –install /usr/bin/php php /usr/bin/php8.2 82

sudo update-alternatives –config php

ابزارهای مدیریت نسخه PHP 

در سرورهای توسعه یا میزبانی وب که چند پروژه با نسخه‌های مختلف PHP دارند، مدیریت دستی بسیار دشوار است اما خوشبختانه ابزارهایی وجود دارند که چند نسخه را هم‌زمان نگه دارید و نسخه فعال را به صورت داینامیک انتخاب کنید.

  • update-alternatives: ابزاری استاندارد در لینوکس‌های مبتنی بر دبیان برای انتخاب نسخه پیش‌فرض برنامه‌ها در محیط ترمینال است ولی تأثیر مستقیم روی php -fpm ندارد. 
  • scl: ابزار software collections همان کار را در لینوکس‌های رد هت انجام می‌دهد با این تفاوت که نسخه‌های متفاوت به صورت جداگانه در یک محیط ایزوله نصب می‌شوند. 

scl enable php82 bash

با اجرای دستور بالا، یک محیط ترمینال جدید باز می‌شود که در آن نسخه ۸.۲ PHP فعال است، بدون اینکه به نسخه اصلی سیستم لطمه‌ای وارد شود.

استفاده از پنل مدیریت هاست

در هاست‌های اشتراکی، شما معمولاً دسترسی root یا SSH ندارید و نمی‌توانید چند نسخه PHP به صورت هم‌زمان روی سیستم نصب کنید. با این حال، شرکت ارائه‌دهنده هاست معمولاً چند نسخه PHP را از قبل نصب کرده و شما می‌توانید از طریق پنل، نسخه مناسب را برای سایت خود انتخاب کنید.

تغییر نسخه PHP در cPanel

۱. وارد پنل cPanel خود شوید.

۲. از بخش Software روی گزینه PHP Version & Extensions کلیک کنید.

۳. نسخه مورد نظر PHP را از منوی کشویی انتخاب کنید.

۴. در صورت نیاز، می‌توانید ماژول‌های PHP را فعال یا غیرفعال کنید.

۵. روی Set as current کلیک کنید تا نسخه انتخابی اعمال شود.

تغییر نسخه PHP در DirectAdmin

۱. وارد پنل DirectAdmin شوید.

۲. از منوی اصلی، روی Domain Setup کلیک کرده و دامنه مورد نظر را انتخاب کنید.

  1. به بخش PHP Version Selector بروید.
  2. نسخه PHP مورد نظر را از لیست انتخاب کرده و ذخیره کنید.

مدیریت ماژول‌ها و اکستنشن‌های PHP برای نسخه جدید

هر پروژه PHP معمولاً به ترکیب خاصی از اکستنشن‌ها نیاز دارد. برای مثال، پروژه‌ای که به بانک اطلاعاتی متصل است احتمالاً نیاز به pdo_mysql دارد، یا پروژه‌های چندزبانه به intl وابسته‌اند. از طرفی، فعال بودن برخی اکستنشن‌ها مثل xdebug در محیط پروداکشن می‌تواند باعث افت شدید سرعت شود.

تغییر نسخه PHP تنظیمات ماژول‌ها را به حالت پیش‌فرض بازمی‌گرداند، به‌همین‌دلیل باید پس از هر تغییر نسخه، اکستنشن‌های فعال را دوباره بررسی و مدیریت کنید.

مشاهده اکستنشن‌های فعال برای نسخه جدید

برای اینکه بدانید چه اکستنشن‌هایی روی نسخه خاصی از PHP فعال هستند، می‌توانید از دستور زیر استفاده کنید:

php8.2 -m

فعال یا غیرفعال‌سازی ماژول‌ها

در اوبونتو و دیگر لینوکس‌های مبتنی بر دبیان، از دستورهای phpenmod و phpdismod برای فعال و غیرفعال کردن ماژول‌ها استفاده کنید و اگر ماژولی نصب نبود آن‌ را با apt نصب کنید. مثلا: 

sudo apt install php8.2-intl

sudo phpenmod intl

sudo systemctl restart php8.2-fpm

 

⚠️ نکته مهم: هر نسخه PHP در هر محیط اجرا (CLI، FPM، Apache Module) فایل کانفیگ جداگانه‌ای دارد. تغییر تنظیمات در یک فایل روی محیط دیگر تأثیری ندارد. به همین دلیل، اگر مثلاً مقدار upload_max_filesize را در محیط FPM تغییر ندهید، پروژه‌های تحت وب شما همچنان محدود خواهند بود، حتی اگر آن را در CLI تغییر داده باشید.

مدیریت ماژول‌ها فقط با یک کلیک
وقتی از پنل پچیم برای مدیریت سرور لینوکسی خود استفاده کنید، هیچ نیازی به اجرای دستورهای پیچیده نخواهید داشت و می‌توانید تنظیمات ماژول‌های PHP را از داخل پنل انجام دهید. 

دانگرید کردن نسخه PHP

گاهی اوقات نیاز داریم نسخه‌ی PHP سرور را به نسخه‌ای قدیمی‌تر بازگردانیم. این کار برخلاف ارتقاء، معمولاً موقتی است و باید با دقت انجام شود، چون می‌تواند مشکلات امنیتی یا ناسازگاری ایجاد کند.

نکات مهم قبل از دانگرید

  • از فایل‌ها و پایگاه داده بکاپ کامل بگیرید.
  • مطمئن شوید نسخه قدیمی PHP هنوز در دسترس است.
  • سازگاری اکستنشن‌ها و وب‌سرور با نسخه قدیمی را بررسی کنید. 
  • اگر از Composer استفاده می‌کنید، composer.json را بررسی کنید که با نسخه هدف هماهنگ باشد. 

دانگرید PHP در اوبونتو و دبیان 

نسخه فعلی را حذف کنید؛ نسخه قدیمی‌تر را نصب کنید؛ نسخه پیش‌فرض را تنظیم کنید و سرویس‌ها را دوباره راه‌اندازی کنید. 

 

sudo apt remove php8.2 php8.2-cli php8.2-fpm

sudo apt install php7.4 php7.4-cli php7.4-fpm

sudo update-alternatives –config php

sudo systemctl restart php7.4-fpm

sudo systemctl restart nginx

 

⚠️ نکته مهم: اگر از Apache استفاده می‌کنید، به جای php-fpm باید ماژول مربوط به Apache را نصب و سرویس apache2 را ریستارت کنید.

دانگرید PHP در RedHat/CentOS

نسخه فعلی را غیرفعال کنید؛ نسخه قدیمی مورد نظر را فعال کنید؛ پکیج‌های PHP را نصب کنید و سرویس PHP-FPM را دوباره راه‌اندازی کنید. 

sudo dnf module reset php

sudo dnf module enable php:7.4

sudo dnf install php php-cli php-fpm

sudo systemctl restart php-fpm

بعد از دانگرید PHP، چه کارهایی باید انجام دهیم؟

پس از دانگرید کردن، ممکن است بخش‌هایی از کد با نسخه جدید PHP ناسازگار باشند. بنابراین فایل‌های لاگ را بررسی کنید تا مشخص شود که خطای خاصی رخ داده یا نه.

 

علاوه بر آن، این اقدامات را فراموش نکنید: 

  1. فعال‌سازی اکستنشن‌های لازم: نسخه جدید PHP ممکن است برخی اکستنشن‌ها را به‌صورت پیش‌فرض نصب نکند. برای اجرای صحیح برنامه، باید این اکستنشن‌ها را فعال یا نصب کنید.
  2. تنظیم فایل php.ini: در بعضی نسخه‌ها، محل قرارگیری فایل php.ini یا نام پارامترها یکسان نیست. پس حتما بررسی کنید که تنظیمات کلیدی مانند حافظه، تایم‌اوت و مسیر اکستنشن‌ها صحیح باشند.
  3. پاک‌سازی کش‌های قبلی: شاید کش نسخه حذف شده با کش نسخه دانگرید شده تداخل داشته باشد. برای جلوگیری از مشکل، سرویس php-fpm را دوباره راه‌اندازی کنید و پوشه کش را خالی کنید. 

نصب دوباره پکیج‌ها: اگر از Composer برای مدیریت وابستگی‌ها استفاده می‌کنید، دستور composer update را اجرا کنید یا به صورت دستی پکیج‌های مورد نیاز را بررسی کنید.

چرا و چه زمانی نسخه PHP سرور را تغییر دهیم؟

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

بهبود امنیت و عملکرد 

هر نسخه جدید PHP، علاوه بر ویژگی‌های جدید، شامل بهبودهای مهمی در حوزه امنیت و عملکرد است. نسخه‌های قدیمی‌تر (مانند 7.4 و پایین‌تر) معمولاً آسیب‌پذیری‌هایی دارند که دیگر رفع نمی‌شوند و می‌توانند امنیت سرور را در معرض خطر قرار دهند.

 

نسخه‌های جدید PHP با بهبودهایی در ساختار اجرای کد، مصرف حافظه و پردازش درخواست‌ها، می‌توانند تأثیر محسوسی بر عملکرد اپلیکیشن‌های وب داشته باشند. 

 

مثلا PHP 8.3 نسبت به PHP 7.4 در اجرای وردپرس و ووکامرس تا 20 درصد سریع‌تر عمل می‌کند. معرفی قابلیت Just-In-Time Compilation در PHP 8، باعث افزایش سرعت محاسبات سنگین شده است که بهبود چشم‌گیری در پروژه‌های اختصاصی یا برنامه‌هایی که بار پردازشی بالایی دارند، به وجود می‌آورد. 

استفاده از فریمورک یا پلاگین خاص

بسیاری از فریمورک‌ها و افزونه‌های پرکاربرد، به نسخه خاصی از PHP نیاز دارند و اگر نسخه PHP سرور درست تنظیم نشده باشد، احتمال اختلال در عملکرد یا از کار افتادن برنامه وجود دارد. 

 

مثلا Laravel 10 به حداقل نسخه PHP 8.1 نیاز دارد. اگر پروژه‌ای روی PHP 7.4 باشد، نمی‌تواند از آن استفاده کند. به همین ترتیب، Symfony 6.4 نیز تنها از PHP 8.1 و بالاتر پشتیبانی می‌کند، و بسیاری از پکیج‌های آن در نسخه‌های قدیمی‌تر حتی نصب نمی‌شوند.

⚠️ نکته مهم: نصب یا ارتقای فزونه‌های جدید بدون توجه به نسخه PHP، می‌تواند به ارورهایی مانند undefined function, fatal error یا composer dependency conflict منجر شود. 

پایان پشتیبانی نسخه فعلی 

هر نسخه PHP، مانند بسیاری از نرم‌افزارهای متن‌باز، چرخه عمر مشخصی دارد که شامل سه مرحله است:

  1. پشتیبانی فعال (Active Support): نسخه مربوطه به‌طور منظم به‌روزرسانی‌های امنیتی و رفع باگ دریافت می‌کند.
  2. پشتیبانی امنیتی (Security Support): فقط به‌روزرسانی‌های حیاتی امنیتی منتشر می‌شوند.
  3. پایان پشتیبانی (End of Life): پس از یک تاریخ مشخص، هیچ پچ امنیتی یا به‌روزرسانی رسمی از سوی تیم PHP ارائه نمی‌شود.

استفاده از نسخه‌های بدون پشتیبانی باعث می‌شود سرور شما در برابر حملات شناخته‌شده آسیب‌پذیر باقی بماند. حتی اگر برنامه شما فعلاً به درستی کار کند، در آینده با فریمورک‌ها و پلاگین‌های جدید ناسازگار خواهد شد.

من دانش‌آموخته مهندسی نرم‌افزار هستم و در زندگی قبلی برنامه‌نویس وب بودم. این روزها در فعالیت‌های روزمره‌ام زیاد دست به کد نمی‌شوم ولی هنوز عاشق دنیای مهندسی وب و برنامه‌نویسی هستم. سابقه برنامه‌نویسی به زبان‌های #C و Java را دارم و در پروژه‌هایی مشارکت داشته‌ام که ده‌ها هزار کاربر از آن‌ها استفاده کرده‌اند. در حال حاضر مدیر توسعه کسب‌وکار اکسپورت‌کیت هستم و به کسب‌وکارهای دیجیتال و استارتاپ‌های ایرانی کمک می‌کنم وارد بازارهای بین‌المللی شوند.

دیدگاهتان را بنویسید

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

دسته بندی ها

ویدیو
اخبار
مقالات