<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>