<p dir="rtl" align="center"> بسم الله الرحمن الرحیم </p>

# <p dir="rtl" align="center"> نحوه نصب PHP 8.2 روی Ubuntu 22.04|20.04|18.04 </p> #

## <p dir="rtl" align="right"> گام اول: به روزرسانی سیستم اوبونتو </p> ##

<p dir="rtl" align="right">به روز رسانیها را بررسی کنید و قبل از انجام هر اقدام دیگری آنها را نصب کنید. </p>

```r
sudo apt update && sudo apt -y upgrade
```
<p dir="rtl" align="right"> پس از ارتقا، کش APT را پاک کنید.</p>

```r
sudo apt autoremove
```
<p dir="rtl" align="right">درخط فرمان دستور زیر را اجرا کنید، این دستور بررسی می کند که آیا نیاز به راه اندازی مجدد است یا خیر و مطابق با آن عمل می کند.</p>

```r
[ -f /var/run/reboot-required ] && sudo reboot -f
```
<p dir="rtl" align="right">جزئیات انتشار سیستم عامل را می توان با استفاده از دستورات داده شده در اینجا بررسی کرد.</p>

```r
cat /etc/os-release
```
<p dir="rtl" align="right">خروجی دستور بالا:</p>
<p style="background-color: rgb(50, 50, 50); color:white"-->
    PRETTY_NAME="Ubuntu 22.04.1 LTS"<br>
    NAME="Ubuntu"<br>
    VERSION_ID="22.04"<br>
    VERSION="22.04.1 LTS (Jammy Jellyfish)"<br>
    VERSION_CODENAME=jammy<br>
    ID=ubuntu<br>
    ID_LIKE=debian<br>
    HOME_URL="https://www.ubuntu.com/"<br>
    SUPPORT_URL="https://help.ubuntu.com/"<br>
    BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"<br>
    PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"<br>
    UBUNTU_CODENAME=jammy<br>
</p>

## <p dir="rtl" align="right"> گام دوم: مخزن Surý PHP APT را اضافه کنید </p> ##

<p dir="rtl" align="right">برای نصب بسته های PHP 8.2 روی اوبونتو از Ondřej Surýs PHP PPA استفاده کنید که آخرین نسخه های پایدار PHP را برای سیستم های اوبونتو و Debian است. </p>

<p dir="rtl" align="right"> *  برای اوبونتو 18.04 این مخزن حاوی بسته های PHP 8.2 نیست.   راهنمای ما در مورد ساختن از منبع را از پیوند زیر بررسی کنید </p>

[Build and Install PHP 8,7 on Ubuntu 18.04 (Bionic Beaver)](https://computingforgeeks.com/install-php-8-7-on-ubuntu-18-bionic-beaver/)

<p dir="rtl" align="right">قبل از افزودن مخزن، چند بسته وابسته را نصب کنید. </p>

```r
sudo apt update
sudo apt install -y lsb-release gnupg2 ca-certificates apt-transport-https software-properties-common
```

<p dir="rtl" align="right">دستورات زیر را در خط فرمان اجرا کنید تا Surý PPA را به سیستم خود اضافه کنید.</p>

```r
sudo add-apt-repository ppa:ondrej/php
```
<p dir="rtl" align="right">اجرای موفقیت آمیز دستور </p>
<p style="background-color: rgb(50, 50, 50); color:white;">
PPA publishes dbgsym, you may need to include 'main/debug' component<br>
Repository: 'deb https://ppa.launchpadcontent.net/ondrej/php/ubuntu/ jammy main'<br>
Description:<br>
Co-installable PHP versions: PHP 5.6, PHP 7.x and most requested extensions are included. Only Supported Versions of PHP (http://php.net/supported-versions.php) for Supported Ubuntu Releases (https://wiki.ubuntu.com/Releases) are provided. Don't ask for end-of-life PHP versions or Ubuntu release, they won't be provided.<br>
<br>
Debian oldstable and stable packages are provided as well: https://deb.sury.org/#debian-dpa<br>
<br>
You can get more information about the packages at https://deb.sury.org<br>
<br>
IMPORTANT: The <foo>-backports is now required on older Ubuntu releases.<br>
<br>
BUGS&FEATURES: This PPA now has a issue tracker:<br>
https://deb.sury.org/#bug-reporting<br>
<br>
CAVEATS:<br>
    1. If you are using php-gearman, you need to add ppa:ondrej/pkg-gearman<br>
    2. If you are using apache2, you are advised to add ppa:ondrej/apache2<br>
    3. If you are using nginx, you are advised to add ppa:ondrej/nginx-mainline<br>
or ppa:ondrej/nginx<br>
<br>
PLEASE READ: If you like my work and want to give me a little motivation, please consider donating regularly: https://donate.sury.<br>org/<br>
<br>
WARNING: add-apt-repository is broken with non-UTF-8 locales, see<br>
https://github.com/oerdnj/deb.sury.org/issues/56 for workaround:<br>
<br>
# LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php<br>
More info: https://launchpad.net/~ondrej/+archive/ubuntu/php<br>
Adding repository.<br>
Press [ENTER] to continue or Ctrl-c to cancel.<br>
Adding deb entry to /etc/apt/sources.list.d/ondrej-ubuntu-php-jammy.list<br>
Adding disabled deb-src entry to /etc/apt/sources.list.d/ondrej-ubuntu-php-jammy.list<br>
Adding key to /etc/apt/trusted.gpg.d/ondrej-ubuntu-php.gpg with fingerprint 14AA40EC0831756756D7F66C4F4EA0AAE5267A6C<br>
Hit:1 https://mirror.hetzner.com/ubuntu/packages jammy InRelease<br>
Hit:2 https://mirror.hetzner.com/ubuntu/packages jammy-updates InRelease<br>
Hit:3 https://mirror.hetzner.com/ubuntu/packages jammy-backports InRelease<br>
Hit:4 https://mirror.hetzner.com/ubuntu/security jammy-security InRelease<br>
Get:5 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy InRelease [23.9 kB]<br>
Get:6 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy/main amd64 Packages [108 kB]<br>
Get:7 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy/main Translation-en [33.3 kB]<br>
Fetched 166 kB in 1s (120 kB/s)<br>
Reading package lists... Done<br>
</p>


<p dir="rtl" align="right">با اجرای دستور  زیر می توانید به صورت دستی تأیید کنید که مخزن کار می کند.</p>

```r
sudo apt update
```
<p dir="rtl" align="right">خروجی دستور بالا:</p>
<p style="background-color: rgb(50, 50, 50); color:white;">
Hit:1 https://mirror.hetzner.com/ubuntu/packages jammy InRelease<br>
Hit:2 https://mirror.hetzner.com/ubuntu/packages jammy-updates InRelease<br>
Hit:3 https://mirror.hetzner.com/ubuntu/packages jammy-backports InRelease<br>
Hit:4 https://mirror.hetzner.com/ubuntu/security jammy-security InRelease<br>
Hit:5 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy InRelease<br>
Reading package lists... Done<br>
Building dependency tree... Done<br>
Reading state information... Done<br>
</p>

## <p dir="rtl" align="right"> گام سوم: نصب PHP 8.2 روی Ubuntu </p> ##
<p dir="rtl" align="right">هنگامی که PPA اضافه شد، از دستور apt برای نصب PHP 8.2 و سایر ماژول های PHP مرتبط روی سرور اوبونتو استفاده کنید.</p>

```r
sudo apt install php8.2
```
<p dir="rtl" align="right">خروجی دستور بالا:</p>
<p style="background-color: rgb(50, 50, 50); color:white;">
The following additional packages will be installed:<br>
  apache2 apache2-bin apache2-data apache2-utils bzip2 file libapache2-mod-php8.2 libapr1 libaprutil1 libaprutil1-dbd-sqlite3<br> libaprutil1-ldap liblua5.3-0 mailcap mime-support php-common<br>
  php8.2-cli php8.2-common php8.2-opcache php8.2-readline ssl-cert<br>
Suggested packages:<br>
  apache2-doc apache2-suexec-pristine | apache2-suexec-custom www-browser bzip2-doc php-pear<br>
The following NEW packages will be installed:<br>
  apache2 apache2-bin apache2-data apache2-utils bzip2 file libapache2-mod-php8.2 libapr1 libaprutil1 libaprutil1-dbd-sqlite3<br> libaprutil1-ldap liblua5.3-0 mailcap mime-support php-common php8.2<br>
  php8.2-cli php8.2-common php8.2-opcache php8.2-readline ssl-cert<br>
0 upgraded, 21 newly installed, 0 to remove and 2 not upgraded.<br>
Need to get 6,990 kB of archives.<br>
After this operation, 29.8 MB of additional disk space will be used.<br>
Do you want to continue? [Y/n] y<br>
</p>
<p dir="rtl" align="right">نصب بسته را طبق درخواست با کلید Y بپذیرید.</p>
<p dir="rtl" align="right">برای بررسی نسخه PHP که در حال حاضر روی سیستم نصب شده است دستور زیر را اجرا کنید:</p>

```r
php -v
```
<p dir="rtl" align="right">یا دستور:</p>

```r
php --version
```
<p dir="rtl" align="right">خروجی:</p>
<p style="background-color: rgb(50, 50, 50); color:white;">
PHP 8.2.7 (cli) (built: Jun  8 2023 15:27:40) (NTS) <br>
Copyright (c) The PHP Group<br>
Zend Engine v4.2.7, Copyright (c) Zend Technologies<br>
with Zend OPcache v8.2.7, Copyright (c), by Zend Technologies<br>
</p>

## <p dir="rtl" align="right"> گام چهارم: نصب ماژولهای PHP 8.2 </p> ##
<p dir="rtl" align="right">ماژول های PHP کتابخانه های نرم افزاری هستند که برای افزودن قابلیت به PHP ایجاد شده اند.  این ماژولها معمولاً به زبان C نوشته می شوند و می توانید به صورت پویا در PHP بارگذاری کنید یا به عنوان اشیاء مشترک کامپایل کنید.
<br>
اگر می‌خواهید ماژول‌های PHP 8.2 را روی سیستم اوبونتو نصب کنید، از apt package manager با دستور  داده شده در اینجا استفاده کنید:
</p>

```r
sudo apt install -y php8.2-<module-name>
```

<p dir="rtl" align="right">جایی که <module-name> با نام واقعی ماژولی که قرار است نصب شود جایگزین می شود.</p>
<p dir="rtl" align="right">در این مثال ما ماژول PHP 8.2 fpm را از PPA که قبلا اضافه شده بود نصب می کنیم.</p>

```r
sudo apt install php8.2-fpm
```
<p dir="rtl" align="right">خروجی دستور بالا:</p>
<p style="background-color: rgb(50, 50, 50); color:white;">
Reading package lists... Done<br>
Building dependency tree... Done<br>
Reading state information... Done<br>
Suggested packages:<br>
  php-pear<br>
The following NEW packages will be installed:<br>
  php8.2-fpm<br>
0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded.<br>
Need to get 1,886 kB of archives.<br>
After this operation, 5,756 kB of additional disk space will be used.
Get:1 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy/main amd64 php8.2-fpm amd64 8.2.1-2+ubuntu22.04.1+deb.sury.org+1<br> [1,886 kB]<br>
Fetched 1,886 kB in 0s (5,211 kB/s)<br>
Selecting previously unselected package php8.2-fpm.<br>
(Reading database ... 56412 files and directories currently installed.)<br>
Preparing to unpack .../php8.2-fpm_8.2.1-2+ubuntu22.04.1+deb.sury.org+1_amd64.deb ...<br>
Unpacking php8.2-fpm (8.2.1-2+ubuntu22.04.1+deb.sury.org+1) ...<br>
Setting up php8.2-fpm (8.2.1-2+ubuntu22.04.1+deb.sury.org+1) ...<br>
....<br>

<p dir="rtl" align="right">:نصب ماژول های پرکاربرد</p>

```r
sudo apt install php8.2-{bcmath,fpm,xml,mysql,zip,intl,ldap,gd,cli,bz2,curl,mbstring,pgsql,opcache,soap,cgi}
```
<p dir="rtl" align="right">:ماژول های نصب شده را می توان با دستور زیر فهرست کرد</p>

```r
php -m
```

<p dir="rtl" align="right">خروجی:</p>
<p style="background-color: rgb(50, 50, 50); color:white"-->
[PHP Modules]<br>
bcmath<br>
bz2<br>
calendar<br>
Core<br>
ctype<br>
curl<br>
date<br>
dom<br>
exif<br>
FFI<br>
fileinfo<br>
filter<br>
ftp<br>
gd<br>
gettext<br>
hash<br>
iconv<br>
intl<br>
json<br>
ldap<br>
libxml<br>
mbstring<br>
mysqli<br>
mysqlnd<br>
openssl<br>
pcntl<br>
pcre<br>
PDO<br>
pdo_mysql<br>
pdo_pgsql<br>
pgsql<br>
Phar<br>
posix<br>
readline<br>
Reflection<br>
session<br>
shmop<br>
SimpleXML<br>
soap<br>
sockets<br>
sodium<br>
SPL<br>
standard<br>
sysvmsg<br>
sysvsem<br>
sysvshm<br>
tokenizer<br>
xml<br>
xmlreader<br>
xmlwriter<br>
xsl<br>
Zend OPcache<br>
zip<br>
zlib<br>
<br>
[Zend Modules]<br>
Zend OPcache<br>
</p>

## <p dir="rtl" align="right"> گام پنجم: استفاده از PHP با Nginx / Apache</p> ##

<p dir="rtl" align="right">ما هر دو پیکربندی وب سرور انجینکس و آپاچی را برای میزبانی برنامه پی-اچ-پی شما در نظر خواهیم گرفت.</p>

### <p dir="rtl" align="right"> میزبانی برنامه PHP با وب سرور Nginx</p> ###

<p dir="rtl" align="right">با Nginx، کد PHP معمولاً توسط یک فرآیند جداگانه مانند PHP-FPM (مدیر فرآیند FastCGI) اجرا می شود.  PHP-FPM دیمونی است که به درخواست های دریافتی PHP گوش می دهد و آنها را در یک فرآیند جداگانه اجرا می کند.  Nginx فقط درخواست های دریافتی را به PHP-FPM ارسال می کند که در آنجا اجرا می شوند.</p>
<p dir="rtl" align="right">وب سرور Nginx و extension FPM را نصب کنید.</p>

```r
sudo apt install nginx php8.2-fpm
```

<p dir="rtl" align="right">پیکربندی سرور Nginx خود را باز کنید و بلوک زیر را داخل بلوک http اضافه کنید تا درخواست‌های PHP را برای اجرا توسط PHP-FPM پیکربندی کنید:</p>

```r
sudo nano /etc/nginx/nginx.conf
```

<p dir="rtl" align="right">در فایل باز شده متن زیر را قرار دهید</p>

```r
server {
        listen 80;
        
        server_name mysite.example.com;
        root /var/www/mysite;
        index index.php index.html;

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

<p dir="rtl" align="right">برای ذخیره ی فایل کلید ترکیبی ctrl+ O را بزنید. </p>
<p dir="rtl" align="right">برای خروج از فایل و برگشتن به خط فرمان کلید ترکیبی ctrl + X را بزنید. </p>
<b>
<p dir="rtl" align="right">اعتبار سنجی پیکربندی انجینکس با دستور زیر انجام می گیرد:</p>

```r
sudo nginx -t
```

<p dir="rtl" align="right">خروجی دستور فوق:</p>

<p style="background-color: rgb(50, 50, 50); color:white"-->
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok <br>
nginx: configuration file /etc/nginx/nginx.conf test is successful
</p>
<p dir="rtl" align="right">نشان دهنده درستی پیکربندی است. "ok" , "successful"</p>

### <p dir="rtl" align="right">میزبانی برنامه پی-اچ-پی با وب سرور آپاچی</p>  ###

## <p dir="rtl" align="right"> در آپاچی می توانیم از یک ماژول داخلی به نام mod_php برای پردازش کدهای PHP به طور مستقیم در فرآیند آپاچی استفاده کنیم. </p> ##
<p dir="rtl" align="right">اما ابتدا باید بسته وب سرور آپاچی، PHP و پسوند Apache PHP را نصب کنید:</p>

```r
sudo apt install apache2 libapache2-mod-php8.2 
```  
<p dir="rtl" align="right">اگر دستور فوق جواب نداد به جای آن دستور زیر را اجرا کنید:</p>

```r
sudo apt install apache2 php8.2-fpm
```

<p dir="rtl" align="right">ماژول mod_php فعالسازی:</p>

```r
sudo a2enmod php8.2
```
<p dir="rtl" align="right">برای نمایش آزمایشی </p>
<p dir="rtl" align="right">خط فرمان را باز کنید و دستورات زیر را اجرا کنید:.</p>

```r
cd /var/www/
/var/www$ ls
```
<p style="background-color:black;color:white">
خروجی:<br>
html
</p>

<p dir="rtl" align="right"> اگر پوشه ی html وجود نداشت با دستور زیر این پوشه را ایجاد کنید:</p>

```r
sudo mkdir html
```

<p dir="rtl" align="right"> سپس فایل آزمایشی را ایجاد کنید:</p>

```r
cd html/
sudo nano testPHP.php
```

<p dir="rtl" align="right">در فایل باز شده متن زیر را قرار دهید</p>

```r
<?php

phpinfo();

?>
```
<p dir="rtl" align="right"> با کلید ترکیبی Ctrl+O تغییرات را ذخیره کنید و با کلید ترکیبی Ctrl+X از فایل خارج شوید.</p>

<p dir="rtl" align="right">بعد از پیکربندی سرویس آپاچی را دوباره راه اندازی کنید:</p>

```r
sudo systemctl restart apache2
```
<p dir="rtl" align="right">از URL صفحه وب بازدید کنید:</p>

```r
http://localhost/testPHP.php
```


## <p dir="rtl" align="right"> [منبع:](https://computingforgeeks.com/how-to-install-php-8-2-on-ubuntu/) </p> ## 

<p dir="rtl" align="center">صلوات</p>
