اوبنتوبرنامه نویسیبک اند

نصب PHP و راه‌اندازی محیط توسعه محلی در اوبونتو

مقدمه

PHP، زبان اسکریپتنویسی سمت-سرور محبوب و متن-باز است که برای توسعه وب طراحی شده و بخش قابل-توجهی از اینترنت—from وبلاگها و سایتهای فروشگاهی تا اپلیکیشنهای بزرگمقیاس—را تغذیه میکند. با هر Release جدید، PHP کارایی، امنیت و قابلیتهای توسعه مدرنی ارائه میکند تا توسعهدهندگان نرمافزار مقاوم و مقیاسپذیر بسازند.

PHP 8.1 یک Release پایدار و بلندمدت-پشتیبانی-شده بود؛ اما در دسامبر ۲۰۲۵ به پایان عمر (EOL) رسید. این نسخه قابلیتها و ویژگیهای جدید زبان را—to‌همراه حفظ قابلیت اطمینان—میآورد. این آموزش را برای PHP 8.3—which در اوبونتو 24.04 LTS پیشفرض است—بهروزرسانی کردهایم؛ اما مراحل برای PHP 8.1 هم همان است—فقط شماره نسخه را در دستورات جایگزین کنید.

این tutorial شما را در نصب PHP در اوبونتو، پیکربندی آن با Apache یا Nginx، راهاندازی اکستنشنهای ضروری PHP و نصب Composer برای مدیریت وابستگیها راهنمایی میکند. هم‌چنین یاد میگیرید چطور نصب‌تان را تأیید و مسائل رایج را عیب‌یابی کنید.

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

نکات کلیدی

  • نصب PHP در اوبونتو 24.04: اوبونتو 24.04 LTS شامل PHP 8.3 در مخازن پیشفرض است—to‌همراه نصب نسخه پایدار و بلندمدت-پشتیبانی-شده با apt—بدون نیاز به PPAهای شخص-ثالث. این، بهروزرسانیهای قابل-پیشبینی، وصلههای امنیتی و سازگاری با فریمورکهای مدرن PHP را تضمین میکند.
  • اکستنشنهای ضروری PHP برای پروژههای واقعی: بیشتر اپلیکیشنهای PHPِ کلاس-پروداکشن به اکستنشنهایی مثل mysql، curl، xml، mbstring، zip، gd و bcmath تکیه دارند. نصب زودهنگام اینها از خطاهای زمان-اجرا جلوگیری کرده و سازگاری با فریمورکهایی مثل Laravel، Symfony و وردپرس را تضمین میکند.
  • انتخاب Apache یا Nginx برای توسعه PHP: Apache میتواند PHP را مستقیم با mod_php اجرا کند؛ در حالی که Nginx به PHP-FPM برای مدیریت درخواستها نیاز دارد. هر دو رویکرد برای توسعه محلی خوب کار میکنند؛ اما PHP-FPM محیطهای پروداکشن مدرن را نزدیکتر منعکس کرده و زیر بار بهتر Scale میشود.
  • Composer به‌عنوان بنیاد روندهای کاری مدرن PHP: Composer وابستگیهای پروژه را—from طریق composer.json و composer.lock—مدیریت کرده و Buildهای سازگار بین ماشینها را تضمین میکند. برای نصب فریمورکها، تولید Autoloaderها و نگهداری نسخههای قابل-اعتماد وابستگی در پروژههای گروهی PHP ضروری است.
  • پیکربندی PHP مخصوص توسعه: محیطهای توسعه از گزارش خطای پرحرف، محدوده حافظه بالاتر و زمانهای اجرا طولانیتر بهره میبرند. تنظیم این مقادیر در php.ini کمک میکند باگها در حین توسعه سریع نمایان شوند—اما همیشه باید برای دیپلوی پروداکشن برگردانده شوند.

پیش‌نیازها

برای تکمیل این tutorial به این موارد نیاز دارید:

  • ماشین محلی یا سرور مجازی اجراکننده اوبونتو (سازگار با اوبونتو 24.04 LTS و نسخههای بعدی)
  • دسترسی مدیریتی (sudo) به ماشین
  • اتصال اینترنت فعال
  • آشنایی پایه با خط فرمان

اگر سرور اوبونتوی جدیدی راهاندازی میکنید، راهنمای راهاندازی اولیه سرور با اوبونتو در پارمین کلود را ببینید.

گام ۱ — راه‌اندازی PHP

نصب و راهاندازی را روی خط فرمان کامل میکنید—which روش غیر-گرافیکی برای تعامل با کامپیوتر است. یعنی—to‌جای کلیک روی دکمهها—متن تایپ کرده و از طریق متن بازخورد میگیرید.

خط فرمان—which شل یا Terminal هم نامیده میشود—میتواند در اصلاح و خودکارسازی وظایف روزمره کمک کرده و ابزار ضروری توسعهدهندگان نرمافزار است. مقاله «مقدمهای بر ترمینال لینوکس» در پارمین کلود میتواند شما را با ترمینال بهتر جهتدهی کند.

نکته: اگر با اوبونتوی جدید کار میکنید، مستندات اوبونتو در پارمین کلود را برای راهنمایی سیستمی اضافی مرور کنید.

در اوبونتو، برنامه Terminal را با کلیک روی آیکون اوبونتو در گوشه بالا-چپ صفحه و تایپ terminal در نوار جستجو پیدا کنید. روی آیکون Terminal کلیک کنید. به‌عنوان جایگزین، کلیدهای CTRL، ALT و T را همزمان بزنید.

نکته: در اوبونتو 24.04 LTS، PHP 8.3 در مخازن پیشفرض موجود است. وقتی PHP را بدون تعیین نسخه نصب میکنید، سیستم به‌طور پیشفرض PHP 8.3 نصب میکند.

اگر به مدیریت چند نسخه PHP یا نصب نسخه متفاوت نیاز دارید، از ابزارهایی مثل phpenv یا phpbrew برای مدیریت نسخه استفاده کنید.

نصب PHP

این دستورات را برای بهروزرسانی فهرست پکیجهای موجود و سپس نصب PHP اجرا کنید:

sudo apt update
sudo apt install --no-install-recommends php8.3

فلگ --no-install-recommends تضمین میکند پکیجهای دیگر—مثل وبسرور Apache—نصب نشوند.

اطلاعات نسخه PHP را چک کنید:

php -v

خروجی شبیه این میگیرید:

PHP 8.3.6-1ubuntu8.3 (cli) (built: Jul 15 2025 12:11:22) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.6, Copyright (c) Zend Technologies
    with Zend OPcache v8.3.6-1ubuntu8.3, Copyright (c), by Zend Technologies

نصب اکستنشنهای ضروری PHP

sudo apt install -y php8.3-cli php8.3-common php8.3-mysql php8.3-zip php8.3-gd php8.3-mbstring php8.3-curl php8.3-xml php8.3-bcmath

این دستور ماژولهای زیر را نصب میکند:

  • php8.3-cli — مفسر خط فرمان؛ برای تست اسکریپتهای PHP از شل یا Scripting عمومی کاربرد دارد
  • php8.3-common — مستندات، مثالها و ماژولهای رایج PHP
  • php8.3-mysql — برای کار با دیتابیسهای MySQL
  • php8.3-zip — برای کار با فایلهای فشرده
  • php8.3-gd — برای کار با تصاویر
  • php8.3-mbstring — برای مدیریت رشتههای غیر-ASCII (مثل فارسی)
  • php8.3-curl — برای درخواستهای HTTP در PHP
  • php8.3-xml — برای کار با دادههای XML
  • php8.3-bcmath — برای کار با اعداد Float با دقت بالا

فایلهای پیکربندی PHP

فایلهای پیکربندی PHP در /etc/php/8.3/ ذخیره میشوند. فایل پیکربندی اصلی یعنی php.ini —بسته به راهاندازی—در دایرکتوریهای متفاوتی ممکن است باشد:

  • پیکربندی CLI: /etc/php/8.3/cli/php.ini
  • پیکربندی Apache: /etc/php/8.3/apache2/php.ini
  • پیکربندی PHP-FPM: /etc/php/8.3/fpm/php.ini

تأیید اکستنشنهای نصب‌شده

php -m

این همه ماژولهای بارگذاری-شده PHP را فهرست میکند. اگر php -v نسخهای غیر از انتظار نشان داد، ممکن است چند نسخه PHP نصب داشته باشید. برای تأیید مشخصِ PHP 8.3 از php8.3 -v استفاده کنید.

گام ۲ — پیکربندی PHP با Apache

ماژول PHP یعنی Apache را نصب کنید:

sudo apt install libapache2-mod-php8.3

ماژول را فعال و Apache را ریاستارت کنید:

sudo a2enmod php8.3
sudo systemctl restart apache2

درک mod_php

ماژول mod_php، PHP را مستقیم درون پروسه Apache جاسازی میکند. وقتی Apache درخواستی برای فایل PHP دریافت کند، آن را با مفسر PHPِ جاسازی-شده درون پروسه پردازش میکند. این با Nginx—which سرویس PHP-FPM جداگانه لازم دارد—متفاوت است. دستور a2enmod در /etc/apache2/mods-enabled/ Symlinkای ساخته تا ماژول را فعال کند.

با ساخت فایل تستی در Document Root مربوط به Apache (معمولاً /var/www/html)، پردازش درست PHP توسط Apache را تأیید کنید:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

در مرورگر http://localhost/info.php را باز کنید. باید صفحه اطلاعات پیکربندی PHP را ببینید. بعد از تست برای امنیت حذفش کنید:

sudo rm /var/www/html/info.php

عیب‌یابی مسائل PHP مربوط به Apache

اگر Apache بعد از نصب mod_php بالا نمیآید:

sudo tail -20 /var/log/apache2/error.log

مسائل رایج شامل:

  • ماژولهای PHP متناقض: اگر چند نسخه PHP دارید، اول ماژولهای دیگر را با sudo a2dismod php8.1 غیرفعال کنید
  • خطاهای سینتکس در کانفیگ Apache: با sudo apache2ctl configtest چک کنید

اگر localhost را باز میکنید و «It works!» میبینید اما فایلهای PHP متن ساده نمایش مییابند:

یعنی Apache یعنی PHP را پردازش نمیکند:

apache2ctl -M | grep php

اگر چیزی ظاهر نشد، ماژول Load نشده:

sudo a2enmod php8.3
sudo systemctl restart apache2

اگر خطای 403 Forbidden میگیرید:

مجوزهای فایل را چک کنید:

sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

نکته امنیتی: تابع phpinfo() اطلاعات سیستم را افشا میکند. هرگز فایلهای حاوی phpinfo() را روی سرورهای پروداکشن باقی نگذارید.

Virtual Host مربوط به Apache

برای توسعه محلی با دامنههای سفارشی، Virtual Host بسازید:

sudo nano /etc/apache2/sites-available/example.local.conf

این کانفیگ را اضافه کنید:

<VirtualHost *:80>
    ServerName example.local
    DocumentRoot /var/www/example.local
    <Directory /var/www/example.local>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

دایرکتوری بسازید، سایت را فعال و Apache را ریاستارت کنید:

sudo mkdir -p /var/www/example.local
sudo chown -R www-data:www-data /var/www/example.local
sudo a2ensite example.local.conf
sudo systemctl restart apache2

دامنه را برای دسترسی محلی به فایل /etc/hosts اضافه کنید:

echo "127.0.0.1 example.local" | sudo tee -a /etc/hosts

انتخاب بین Apache و Nginx

ویژگیApache با mod_phpNginx با PHP-FPM
پردازش PHPجاسازی-شده در پروسه Apacheسرویس PHP-FPM جداگانه
مصرف حافظهبالاتر (PHP در هر پروسه Apache)پایینتر (Pool پروسه جداگانه)
کاراییبرای ترافیک کم-متوسط خوببرای ترافیک بالا و درخواستهای هم‌زمان بهتر
پیکربندیراهاندازی اولیه سادهترپیچیدهتر (کانفیگ PHP-FPM لازم)
پشتیبانی .htaccessپشتیبانی نیتیوبدون پشتیبانی (باید در Server Block کانفیگ کنید)
استفاده پروداکشنرایج در هاست اشتراکیرایج در دیپلویهای مدرن
منحنی یادگیریبرای مبتدیان آسانترسربالاتر

چه وقت Apache را انتخاب کنید:

  • با Apache آشنا هستید یا پشتیبانی .htaccess لازم دارید
  • محیط توسعه سادهای راهاندازی میکنید
  • با فریمورکهایی کار میکنید که روی .htaccess حسابی تکیه دارند (برخی راهاندازیهای وردپرس)

چه وقت Nginx را انتخاب کنید:

  • کارایی بهتر زیر بار بالا لازم دارید
  • میخواهید محیطهای پروداکشن مدرن را منعکس کنید
  • اپلیکیشنهایی میسازید که Scale میشوند
  • معماری مدرنتری ترجیح میدهید

هر دو برای توسعه محلی بهطور یکسان خوب کار میکنند.

گام ۳ — پیکربندی PHP با Nginx

PHP-FPM یعنی FastCGI Process Manager را نصب کنید:

sudo apt install php8.3-fpm

شروع و فعالسازی PHP-FPM:

sudo systemctl start php8.3-fpm
sudo systemctl enable php8.3-fpm

درک PHP-FPM و FastCGI

برخلاف mod_php مربوط به Apache، Nginx یعنی PHP را مستقیم پردازش نمیکند. PHP-FPM به‌عنوان سرویس جدایی اجرا شده که Nginx با پروتکل FastCGI با آن ارتباط برقرار میکنند. FastCGI پروتکل Binaryای برای ربط برنامهها به وبسرورهاست—from CGI سنتی سریعتر—چون پروسهها را بین درخواستها زنده نگه میدارد.

وقتی Nginx درخواستی برای فایل PHP دریافت کند، آن را—from طریق Socket یونیکس یا اتصال TCP—to PHP-FPM فوروارد میکند. PHP-FPM کد PHP را پردازش کرده و نتیجه را به Nginx برگردانده—which سپس به کلاینت میفرستد.

کانفیگ Server Block مربوط به Nginx

sudo nano /etc/nginx/sites-available/example.local

این کانفیگ را اضافه کنید:

server {
    listen 80;
    server_name example.local;
    root /var/www/example.local;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

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

    location ~ /\.ht {
        deny all;
    }
}

سایت را فعال و کانفیگ را تست کنید:

sudo mkdir -p /var/www/example.local
sudo chown -R www-data:www-data /var/www/example.local
sudo ln -s /etc/nginx/sites-available/example.local /etc/nginx/sites-enabled/
sudo nginx -t

اگر تست پاس شد، Nginx را ریاستارت کنید:

sudo systemctl restart nginx

دامنه را به /etc/hosts اضافه کنید:

echo "127.0.0.1 example.local" | sudo tee -a /etc/hosts

عیب‌یابی مسائل PHP مربوط به Nginx

خطای 502 Bad Gateway:

یعنی Nginx نمیتواند با PHP-FPM ارتباط برقرار کند:

sudo systemctl status php8.3-fpm

مسیر Socket را چک کنید:

grep listen /etc/php/8.3/fpm/pool.d/www.conf

باید listen = /run/php/php8.3-fpm.sock ببینید. مسیر در کانفیگ Nginx باید دقیقاً مطابقت داشته باشد.

اگر PHP-FPM در حال اجراست اما مشکل باقی است، Log خطای Nginx را ببینید:

sudo tail -20 /var/log/nginx/error.log

اگر فایلهای PHP دانلود میشوند—to‌جای اجرا:

بلاک location ~ \.php$ در کانفیگ سرور موجود باشد و fastcgi_pass به Socket درست اشاره کند.

اگر خطای File not found میگیرید:

snippets/fastcgi-php.conf موجود باشد—which متغیر SCRIPT_FILENAME را تنظیم میکند.

گام ۴ — پیکربندی PHP برای توسعه

PHP برای فایلهای CLI و وبسرور—from طریق فایلهای پیکربندی جداگانه—استفاده میکند:

# برای CLI
sudo nano /etc/php/8.3/cli/php.ini

# برای Apache
sudo nano /etc/php/8.3/apache2/php.ini

# برای PHP-FPM (Nginx)
sudo nano /etc/php/8.3/fpm/php.ini

نکته: اگر هم CLI و هم وبسرور استفاده میکنید، باید هر دو فایل را جداگانه پیکربندی کنید. تغییرات cli/php.ini بر درخواستهای وب اثر نمیگذارند.

تنظیمات ضروری توسعه

این تنظیمات را در php.ini پیدا و بهروز کنید:

display_errors = On
display_startup_errors = On
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php_errors.log
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
date.timezone = Asia/Tehran

هر تنظیم چه میکند:

  • display_errors = On: خطاهای PHP را مستقیم در مرورگر نشان میدهد (برای دیباگ مفید؛ در پروداکشن خطرناک)
  • display_startup_errors = On: خطاهای راهاندازی PHP را نشان میدهد
  • error_reporting = E_ALL: همه انواع خطا (Warning، Notice و غیره) را گزارش میکند
  • log_errors = On: خطاها را در فایل Log مینویسد
  • memory_limit = 256M: حداکثر حافظهای که Script میتواند استفاده کند
  • upload_max_filesize = 64M: حداکثر حجم فایلهای آپلودی
  • post_max_size = 64M: حداکثر حجم دادههای POST
  • max_execution_time = 300: حداکثر زمان اجرای Script (به ثانیه)
  • date.timezone: Timezone پیشفرض را تنظیم میکند

هشدار: هرگز این تنظیمات توسعه را در پروداکشن استفاده نکنید. در سرورهای زنده همیشه display_errors = Off بگذارید.

بعد از تغییرات، وبسرور را ریاستارت کنید:

sudo systemctl restart apache2  # یا nginx
sudo systemctl restart php8.3-fpm

گام ۵ — راهاندازی Composer برای مدیریت وابستگیها (اختیاری)

Composer ابزاری برای مدیریت وابستگیها در PHP است—که به شما اجازه میدهد کتابخانههایی که پروژه‌تان به آن‌ها وابسته است تعریف کنید و نصب/بهروزرسانی این پکیجها را مدیریت کند.

با اینکه مشابه است، Composer دقیقاً مثل yum یا apt نیست. با «پکیج»ها یا کتابخانهها سروکار دارد—but آن‌ها را به-ازای-پروژه مدیریت میکند—to‌درون دایرکتوریای (مثلاً vendor) داخل پروژه نصب میکند. به‌طور پیشفرض هیچی را سراسری نصب نمیکند—پس Dependency Manager است (نه Package Manager).

Composer از npm مربوط به Node و Bundler مربوط به Ruby قویاً الهام گرفته است.

نصب Composer

دانلود Installer مربوط به Composer:

curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php

تأیید Integrity مربوط به Installer: Hash یعنی SHA-384 را چک کنید:

HASH=$(curl -sS https://composer.github.io/installer.sig)
php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('/tmp/composer-setup.php'); } echo PHP_EOL;"

باید Installer verified ببینید.

نصب سراسری:

sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer

تست:

composer

خروجی شبیه این میبینید:

   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___ / /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 2.3.5 2022-04-13 16:43:00

Usage:
  command [options] [arguments]
...

نکته برای کاربران ایرانی: اگر در دانلود Composer مشکل دارید، میتوانید از میرور پارمین کلود https://composer.parmincloud.ir برای دسترسی به Packageهای Composer استفاده کنید.

گام ۶ — استفاده از Composer در پروژه PHP

cd ~
mkdir example-project
cd example-project
composer init

Wizard راهاندازی شروع میشود. جزئیاتی که در Wizard وارد میکنید بعداً قابل بهروزرسانی است—پس آزادانه Defaultها را بگذارید و فقط ENTER بزنید:

Package name (<vendor>/<name>) [sammy/example-project]:  sammy/project1
Description []:
Author [n to skip]: Sammy <sammy@example.com>
Minimum Stability []: 
Package Type (e.g. library, project, metapackage, composer-plugin) []: project
License []: 

Define your dependencies.

Would you like to define your dependencies (require) interactively [yes]? no
Would you like to define your dev dependencies (require-dev) interactively [yes]? no

Add PSR-4 autoload mapping? Maps namespace "Sammy\Project1" to the entered relative path. [src/, n to skip]: n

Do you confirm generation [yes]? yes

اولین باری که Dependencyای تعریف کنید، Composer فولدر vendor را میسازد. هم‌چنین فایل composer.lock را—which نسخه دقیق هر Dependency و زیر-Dependency استفادهشده در پروژه را مشخص میکند—ایجاد میکند. این تضمین میکند هر ماشینای که برنامه روی اجرا میشود—to‌همراه همان نسخه دقیقِ هر پکیج—استفاده شود.

نکته: فولدر vendor هرگز نباید به Version Control کامیت شود. به‌جایش فقط composer.json و composer.lock را کامیت کنید.

گام ۷ — تست محیط PHP

اسکریپت PHP پایهای برای تست ساخت و اجرا کنید:

nano hello.php

این کد را اضافه کنید:

<?php
echo 'Hello World!';
?>

ذخیره و اجرا کنید:

php hello.php

اگر PHP درست پردازش شده باشد، این را میبینید:

Hello World!

محیط PHP موفقیتآمیز نصب شده و برای ادامه مسیر برنامهنویسی آماده هستید.

گام ۸ — راهاندازی پروژههای PHP واقعی

فریمورکهای مدرن PHP مثل Laravel، Symfony و وردپرس—to‌همراه اکستنشنهای مشخصی از PHP و Composer—لازم دارند.

راهاندازی Laravel

composer create-project laravel/laravel my-laravel-app
cd my-laravel-app

این دستور Laravel—to‌همراه همه وابستگیهایش—را دانلود میکند. پروسه ممکن است چند دقیقه طول بکشد.

Laravel به این اکستنشنهای PHP—which در گام ۱ نصب شدند—لازم دارد:

  • php8.3-mbstring — مدیریت رشتههای چندبایتی
  • php8.3-xml — پارس XML
  • php8.3-curl — درخواستهای HTTP
  • php8.3-zip — مدیریت آرشیو
  • php8.3-bcmath — ریاضیات با دقت بالا

اگر Laravel—even با وجود نصب—«missing mbstring» گفت:

php -m | grep mbstring

اگر موجود ولی نشان نمیدهد، وبسرور را ریاستارت کنید. هم‌چنین با php --ini چک کنید که در php.ini مربوط به CLI فعال باشد.

تأیید نصب Laravel:

php artisan serve

باید ببینید:

INFO  Server running on [http://127.0.0.1:8000]

http://localhost:8000 را در مرورگر باز کنید. صفحه خوش‌آمدگویی Laravel را باید ببینید.

راهاندازی وردپرس

cd /var/www
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzf latest.tar.gz
sudo chown -R www-data:www-data /var/www/wordpress

وردپرس به دیتابیس MySQL یا MariaDB نیاز دارد:

sudo apt install mysql-server
sudo mysql_secure_installation

دیتابیس و کاربر برای وردپرس بسازید:

CREATE DATABASE wordpress_db;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

وبسرور را برای اشاره به /var/www/wordpress پیکربندی کنید. سایت را در مرورگر باز کرده و جادوگر نصب وردپرس را دنبال کنید.

راهاندازی Symfony

composer create-project symfony/website-skeleton my-symfony-app
cd my-symfony-app

سرور توسعه را شروع کنید:

symfony server:start

یا از سرور داخلی PHP:

php -S localhost:8000 -t public

گام ۹ — بهترین روشها برای توسعه محلی

ملاحظات امنیتی

  • غیرفعال کردن توابع خطرناک: توابعی مثل exec()، system() و shell_exec() در php.ini پروداکشن محدود شوند
  • استفاده از متغیرهای محیطی: پیکربندی حساس را در .env ذخیره کنید
  • مجوزهای درست فایل:
sudo chown -R www-data:www-data /var/www/your-project
sudo find /var/www/your-project -type d -exec chmod 755 {} \;
sudo find /var/www/your-project -type f -exec chmod 644 {} \;

کنترل نسخه

cd /var/www/your-project
git init

.gitignore بسازید:

/vendor/
/node_modules/
.env
.DS_Store
*.log

بهینه‌سازی کارایی

  • OPcache را فعال کنید: OPcache—which با PHP 8.3 شامل میشود—با Cache کردن کد کامپایل-شده PHP کارایی را بهبود میدهد
  • Autoloader مربوط به Composer را بهینه کنید:
composer install --optimize-autoloader --no-dev

گام ۱۰ — عیب‌یابی مسائل رایج

اکستنشنهای PHP Load نمیشوند

dpkg -l | grep php8.3
ls /usr/lib/php/*/extension_name.so

اگر هنوز ظاهر نمیشود، وبسرور را ریاستارت کنید یا نسخه صحیح را تأیید کنید.

خطای 500 Internal Server Error

sudo tail -20 /var/log/apache2/error.log
sudo tail -20 /var/log/nginx/error.log
sudo tail -20 /var/log/php8.3-fpm.log

مسائل رایج شامل: مجوزهای نادرست، اکستنشن مفقود، خطای سینتکس، یا محدودیت حافظه.

تعارض نسخههای PHP

dpkg -l | grep php | grep -E 'php[0-9]'

در Apache، ماژولهای دیگر را غیرفعال کنید:

sudo a2dismod php8.1  # اگر موجود است
sudo a2enmod php8.3
sudo systemctl restart apache2

PHP 8.3 را به‌عنوان نسخه CLI پیشفرض:

sudo update-alternatives --set php /usr/bin/php8.3

مسائل حافظه Composer

اگر Composer حافظهاش تمام شود:

php -d memory_limit=512M /usr/local/bin/composer install

مسائل اتصال دیتابیس

sudo systemctl status mysql
php -m | grep mysql

اگر مفقود است:

sudo apt install php8.3-mysql
sudo systemctl restart apache2  # یا php8.3-fpm

سوالات متداول

۱. چطور PHP را در اوبونتو نصب کنم؟

sudo apt update && sudo apt install php8.3

PHP 8.3 در مخازن پیشفرض اوبونتو 24.04 موجود است.

۲. کدام اکستنشنهای PHP برای توسعه ضروری‌اند؟

php8.3-cli، php8.3-mysql، php8.3-curl، php8.3-xml، php8.3-mbstring، php8.3-zip، php8.3-gd و php8.3-bcmath.

۳. چطور PHP را با Apache یا Nginx پیکربندی کنم؟

برای Apache یعنی libapache2-مد-php8.3 را نصب و با a2enmod فعال کنید. برای Nginx یعنی php8.3-fpm را نصب و کانفیگ FastCGI را تنظیم کنید.

۴. چطور تأیید کنم PHP درست نصب شده؟

php -v را اجرا کنید. فایل تستی با phpinfo() بسازید و از وبسرور بازش کنید.

۵. آیا میتوانم Laravel یا وردپرس را محلی اجرا کنم؟

بله. Laravel به Composer و اکستنشنهای استاندارد PHP نیاز دارد. وردپرس—to‌علاوه بر PHP—به دیتابیس MySQL هم لازم دارد.

۶. چطور Composer را نصب کنم؟

Installer را دانلود، Hash را تأیید و سراسری نصبش کنید.

۷. چطور مسائل اکستنشن مفقود را حل کنم؟

php -m را چک کنید. اکستنشن مفقود را نصب و وبسرور را ریاستارت کنید.

۸. فرق Apache و Nginx برای PHP چیست؟

Apache یعنی mod_php را داشته—PHP مستقیم در پروسه Apache؛ Nginx به PHP-FPM—to‌عنوان سرویس جدا—لازم دارد.

۹. آیا میتوانم چند نسخه PHP را روی همان سیستم نصب کنم؟

بله—with phpenv یا phpbrew. برای بیشتر سناریوهای توسعه، نسخه PHP منفردی کافی است.

نتیجه‌گیری

حالا محیط توسعه کاملاً پیکربندی-شده PHP روی اوبونتو—with پشتیبانی از هر دو وبسرور Apache و Nginx—دارید. راهاندازتان شامل اکستنشنهای ضروری PHP، Composer برای مدیریت وابستگیها و پیکربندی درست برای توسعه محلی است.

قبل از شروع پروژه بعدی، IDEای مثل VS Code—to‌همراه اکستنشنهای PHP برای Syntax Highlighting، دیباگ و پشتیبانی IntelliSense—را در نظر بگیرید.

نوشته های مشابه

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

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

دکمه بازگشت به بالا