learn

نحوه نصب PHP 8.3 با Apache یا Nginx در اوبونتو 24.04

نصب PHP 8.3 در اوبونتو 24.04 با Apache یا Nginx
راهنمای نصب PHP 8.3 در اوبونتو 24.04؛ انتخاب Apache یا Nginx، پیکربندی PHP-FPM و بررسی امن نصب و خطاها.

نصب PHP 8.3 در اوبونتو 24.04 از مخازن همین توزیع امکان‌پذیر است. برای اتصال آن به وب‌سرور دو مسیر دارید: ماژول PHP در Apache یا PHP-FPM در Nginx. فقط مسیر متناسب با سرور خود را اجرا کنید؛ نصب و راه‌اندازی هم‌زمان دو وب‌سرور روی پورت یکسان می‌تواند باعث تداخل شود.

این راهنما برای سروری است که خودتان مدیریت می‌کنید و دسترسی sudo دارید. روی هاست اشتراکی یا سرور دارای cPanel، Plesk یا DirectAdmin، نسخه PHP را از ابزار همان پنل تغییر دهید؛ نصب دستی بسته‌های سیستم ممکن است با پیکربندی پنل تداخل داشته باشد. پیش از تغییر سرور عملیاتی، از فایل‌ها، پایگاه داده و تنظیمات وب‌سرور پشتیبان بگیرید و سازگاری برنامه را در محیط آزمایشی بررسی کنید.

پیش‌نیازها و انتخاب نسخه PHP

ابتدا نسخه سیستم‌عامل، نسخه موجود PHP و سرویس فعال را بررسی کنید. این مقاله مخصوص Ubuntu 24.04 است؛ دستورها را بدون بررسی روی نسخه دیگری اجرا نکنید.

cat /etc/os-release
php -v
systemctl is-active apache2 nginx
sudo apt update
apt-cache policy php8.3-cli php8.3-fpm

اگر PHP نصب نیست، خطای «command not found» در دستور دوم طبیعی است. خروجی دستور آخر باید بسته‌های مربوط به مخازن مورد اعتماد سرور را نشان دهد. برای نصب PHP 8.3 روی Ubuntu 24.04 معمولاً نیازی به افزودن مخزن شخص ثالث نیست. ارتقای کامل همه بسته‌ها را نیز بدون برنامه نگهداری و بررسی اثر آن روی سرویس‌های فعال انجام ندهید.

در تاریخ بازبینی این راهنما، پشتیبانی فعال upstream شاخه 8.3 پایان یافته، اما اصلاحات امنیتی آن تا ۳۱ دسامبر ۲۰۲۷ ادامه دارد. این چرخه با سیاست نگهداری بسته‌های Ubuntu یکسان نیست. نسخه مناسب را بر اساس سازگاری برنامه و پشتیبانی توزیع انتخاب کنید؛ این مقاله به معنی معرفی PHP 8.3 به‌عنوان جدیدترین نسخه PHP نیست.

روش اول: نصب PHP 8.3 با Apache

این مسیر برای Apache با ماژول PHP است. اگر سرور از قبل با PHP-FPM و Apache تنظیم شده، روش اجرایی را بدون بررسی عوض نکنید. روی سرور تازه، بسته‌های لازم را نصب کنید:

sudo apt install apache2 php8.3-cli libapache2-mod-php8.3
sudo apache2ctl configtest
sudo systemctl restart apache2

در نصب استاندارد Ubuntu، بسته ماژول معمولاً پیکربندی اتصال به Apache را انجام می‌دهد. اگر آزمون تنظیمات خطا دارد، ابتدا همان خطا را برطرف کنید؛ وب‌سرور سالم را با تنظیمات نامعتبر دوباره راه‌اندازی نکنید. پروژه‌هایی که به مدل پردازشی یا کارایی خاص نیاز دارند می‌توانند از Apache همراه PHP-FPM استفاده کنند، اما تنظیم آن با مسیر ماژول بالا متفاوت است.

روش دوم: نصب PHP 8.3 با Nginx و PHP-FPM

Nginx کد PHP را مستقیماً اجرا نمی‌کند و درخواست را از طریق FastCGI به PHP-FPM می‌فرستد. برای این مسیر به ماژول PHP مخصوص Apache نیاز ندارید:

sudo apt install nginx php8.3-cli php8.3-fpm
sudo systemctl enable --now php8.3-fpm
sudo systemctl status php8.3-fpm --no-pager
ls -l /run/php/

در فایل سایت فعال Nginx، داخل بلوک server مربوط به همان دامنه، پردازش فایل‌های PHP را اضافه یا اصلاح کنید. نمونه زیر برای تنظیم استاندارد Ubuntu و سوکت پیش‌فرض است؛ مسیر واقعی را از پیکربندی pool و خروجی بررسی بالا بخوانید:

index index.php index.html;

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}

این بخش جایگزین کل فایل سایت نیست. تنظیمات موجود دامنه، HTTPS و مسیر root را حفظ کنید و بلوک تکراری پردازش PHP نسازید. نقطه در عبارت \.php$ باید escape شود تا پسوند فایل دقیق بررسی شود. snippet استاندارد Ubuntu تنظیمات متداول FastCGI را فراهم می‌کند؛ در یک نصب سفارشی ابتدا وجود و محتوای آن را بررسی کنید.

sudo nginx -t
sudo systemctl reload nginx

فقط در صورت موفق‌بودن آزمون تنظیمات، سرویس را reload کنید. اگر فایل تنظیمات pool یا php.ini را تغییر داده‌اید، پیش از reload کردن FPM از اعتبار تنظیمات مطمئن شوید و سپس سرویس مربوط به همین نسخه را reload کنید.

افزونه‌های PHP را بر اساس نیاز برنامه نصب کنید

وجود PHP به‌تنهایی به معنی آماده‌بودن همه قابلیت‌های برنامه نیست. برای مثال، یک برنامه مبتنی بر MySQL ممکن است به بسته پایگاه داده، و پردازش تصویر به GD نیاز داشته باشد. الزامات رسمی نرم‌افزار را بخوانید و فقط افزونه‌های موردنیاز را نصب کنید. نمونه متداول:

sudo apt install php8.3-mysql php8.3-xml php8.3-mbstring php8.3-curl php8.3-gd php8.3-zip
php8.3 -m

پس از نصب افزونه، سرویس پردازش‌کننده وب را متناسب با مسیر انتخابی restart یا reload کنید. خروجی php8.3 -m مربوط به خط فرمان است؛ PHP وب می‌تواند فایل تنظیمات یا حتی نسخه متفاوتی داشته باشد. در php8.3 --ini مسیر تنظیمات CLI را می‌بینید، نه لزوماً تنظیمات Apache یا FPM.

آزمون نصب بدون انتشار اطلاعات کامل سرور

ابتدا در محیط آزمایشی یک فایل موقت داخل DocumentRoot همان سایت بسازید که فقط نسخه را نمایش دهد:

<?php
header('Content-Type: text/plain; charset=utf-8');
echo PHP_VERSION;

فایل را از مسیر همان دامنه باز کنید و نسخه موردانتظار را بررسی کنید. این تست تأیید می‌کند درخواست وب به PHP رسیده، اما سلامت کامل برنامه یا امنیت سرور را ثابت نمی‌کند. بعد از آزمون، فقط همین فایل موقت را حذف کنید. خروجی کامل phpinfo() را عمومی رها نکنید؛ می‌تواند اطلاعات محیط و تنظیمات سرور را آشکار کند.

رفع خطاهای رایج پس از نصب PHP 8.3

  • نمایش یا دانلود کد PHP: اتصال وب‌سرور به پردازشگر فعال نیست. صفحه آزمایشی را از دسترس عمومی خارج و پیکربندی handler را بررسی کنید؛ نمایش کد برنامه می‌تواند اطلاعات محرمانه را افشا کند.
  • خطای 502 در Nginx: وضعیت PHP-FPM، مسیر سوکت و لاگ همان درخواست را بررسی کنید. برای رفع خطا مجوز همه فایل‌ها را روی 777 قرار ندهید.
  • خطای شروع وب‌سرور: خروجی configtest و اشغال‌بودن پورت را بررسی کنید. دو سرویس مستقل نمی‌توانند روی آدرس و پورت یکسان گوش دهند.
  • خطای افزونه ناموجود: بسته افزونه باید برای همان نسخه PHP و همان محیط اجرای وب فعال باشد. سپس درخواست مشکل‌دار را دوباره امتحان کنید.

برای تشخیص، لاگ سرویس را در همان بازه زمانی بخوانید؛ پیام خطا مهم‌تر از تغییر تصادفی محدودیت حافظه است:

sudo journalctl -u php8.3-fpm -n 50 --no-pager
sudo tail -n 50 /var/log/nginx/error.log
sudo tail -n 50 /var/log/apache2/error.log

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

پرسش‌های متداول

آیا باید Apache و Nginx را با هم نصب کنم؟

خیر. یکی از دو مسیر کافی است. استفاده ترکیبی با reverse proxy امکان‌پذیر است، اما به طراحی پورت‌ها و تنظیمات جداگانه نیاز دارد و موضوع این راهنمای نصب پایه نیست.

آیا تغییر نسخه CLI، نسخه PHP سایت را هم تغییر می‌دهد؟

لزوماً خیر. دستور php -v نسخه پیش‌فرض خط فرمان را نشان می‌دهد. نسخه سایت به ماژول Apache یا pool و سوکت FPM متصل به آن وابسته است.

منابع و تاریخ بازبینی

این راهنما در ۲۷ مهر ۱۴۰۵ بازبینی محتوایی شده است. دستورها برای نصب استاندارد Ubuntu 24.04 توضیح داده شده‌اند و روی زیرساخت اختصاصی شما اجرا و آزمایش نشده‌اند.

مطالعه مرتبط در هاست نگار

مطالب مرتبط

ارسال نظر

فهرست مطالب