- Установка PHP в Ubuntu
- Установка PHP в Ubuntu
- 1. Версия по умолчанию — 7.4
- 2. Устаревшая версия — 5.6
- 3. Новая версия — 8.0
- Установка расширений PHP
- Выбор версии PHP по умолчанию
- Выводы
- Установка PHP и модулей на Ubuntu/Debian
- Nginx, Php-Fpm и что это вообще?
- Почему timeout для curl в php необходим
- Угадайте самый медленный фреймворк. И это не Laravel
- Curl в PHP
- Сессии в PHP — часть первая для Чайников
Установка PHP в Ubuntu
PHP — это очень популярный скриптовый язык программирования с открытым исходным кодом, который часто используется для разработки веб-сайтов и веб-приложений. PHP означает рекурсивный акроним от PHP Hypertext Processor. Скрипты выполняются на стороне сервера и могут находиться как в отдельных файлах, так и быть встроенными в HTML.
На данный момент официально поддерживается три версии PHP — это 5.6, 7.4 и 8. Предыдущие версии больше не получают обновлений безопасности. В этой статье мы рассмотрим как выполняется установка PHP Ubuntu. Будем устанавливать только поддерживаемые версии. Кроме того, рассмотрим как установить расширения для Apache, а также изменить версию по умолчанию.
Установка PHP в Ubuntu
1. Версия по умолчанию — 7.4
PHP версии 7.4 поставляется в официальных репозиториях Ubuntu, поэтому если вы хотите эту версию, то можете очень просто установить ее с помощью команды apt. Сначала смотрим информацию:
Теперь для установки версии из репозиториев наберите:
Для того чтобы интерпретатор php работал с Apache необходимо установить ещё этот пакет:
sudo apt install libapache2-mod-php
После этого можно посмотреть версию php в терминале:
2. Устаревшая версия — 5.6
Если вам нужна другая версия PHP, например, 5.6, то вам придется добавить в систему репозиторий PPA. Сначала необходимо установить зависимости:
sudo apt install python-software-properties
Затем для добавления PPA репозитория выполните:
sudo add-apt-repository ppa:ondrej/php
Теперь вы можете установить php ubuntu нужной вам версии. В данном случае 5.6. Для Apache выполните такие команды:
sudo apt install php5.6 libapache2-mod-php5.6
Затем можно смотреть версию:
Обратите внимание, что установленная версия PHP не конфликтует с версией из официальных репозиториев. Обе версии могут существовать в системе и между ними можно переключаться.
3. Новая версия — 8.0
На момент написания статьи, версия PHP 8.0 вышла относительно недавно и в официальных репозиториях LTS релиза Ubuntu её нет. В этой версии было много улучшений и исправлений и если вы хотите её попробовать, то можете установить из того же самого PPA:
sudo add-apt-repository ppa:ondrej/php
Затем, как и в предыдущем пункте необходимо указать версию php, которая вам нужна в команде установки:
sudo apt install php8.0 libapache2-mod-php8.0
После завершения установки интерпретатор появится в системе:
Установка расширений PHP
Не зависимо от того какую версию PHP вы установили, обычно для полноценной работы программ необходимо ещё установить расширения. Вот основные расширения, которые требуются чаще всего:
- php-curl — поддержка библиотеки CURL для отправки сетевых запросов;
- php-memcached — кэширование с помощью Memcache;
- php-mysql — поддержка баз данных MySQL и MariaDB;
- php-pgsql — поддержка PostgreSQL;
- php-gd — обработка графики с помощью библиотеки GD;
- php-imagick — обработка графики с помощью библиотеки ImageMagick;
- php-intl — локализация и интернационализация;
- php-mcrypt — шифрование;
- php-xml — работа с XML файлами и DOM;
- php-zip — работа с ZIP архивами;
- php-mbstring — работа со строками содержащими UTF-8 символы, в том числе и кириллицу.
Для того чтобы установить все эти расширения для версии PHP по умолчанию выполните такую команду:
sudo apt install php-curl php-memcached php-mysql php-pgsql php-gd php-imagick php-intl php-mcrypt php-xml php-zip php-mbstring
Если надо установить расширения PHP для определённой версии, то следует указать эту версию в названии пакета:
sudo apt install php7.4-curl php7.4-memcached php7.4-mysql php7.4-pgsql php7.4-gd php7.4-imagick php7.4-intl php7.4-mcrypt php7.4-xml php7.4-zip php7.4-mbstring
Аналогично можно установить расширения для PHP 5.6 или 8.0.
Выбор версии PHP по умолчанию
Вы можете выбрать какую версию php нужно использовать по умолчанию с помощью утилиты update-alternatives. Сначала смотрим доступные версии:
sudo update-alternatives —config php
После этого следует ввести номер версии, которую вы хотите использовать по умолчанию:
Или можно сразу установить php ubuntu по умолчанию:
sudo update-alternatives —set php /usr/bin/php5.6
Чтобы используемая версия обновилась в Apache нужно подключить правильный модуль и перезагрузить веб-сервер. Например, для того чтобы отключить 7.4 и включить 5.6 выполните:
sudo a2dismod php7.4
sudo a2enmod php5.6
sudo systemctl restart apache2
Установка php 8 Ubuntu выполняется так же. Теперь вы знаете как переключить версию php Ubuntu. Установка и настройка PHP вместе с Nginx отдельная обширная тема и она описана в статье про настройку PHP-FPM.
Выводы
В этой статье мы рассмотрели как выполняется установка PHP 8 ubuntu 20.04 и других версиях системы. Теперь вы знаете как установить не только PHP 8, но и другие поддерживаемые версии. Как видите, это очень просто, вы можете получить нужную версию PHP буквально в несколько кликов. Надеюсь, эта информация была вам полезной.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Установка PHP и модулей на Ubuntu/Debian
В Debian и Ubuntu есть несколько вариантов работы php: как модуль apache и как php-fpm. Первый вариант удобен тем, кому придется использовать не только сам PHP, но и возможности Apache, такие как .htaccess. Второй же вариат удобен например для Yii или Laravel.
Установка PHP 5 как модуля Apache:
apt-get update apt-get install libapache2-mod-php5 php5-cli php5-memcache php5-memcached php5-mysql php5-pgsql php5-curl php5-gd php5-imagick php5-intl php5-mcrypt
Установка PHP 7 как модуля Apache:
apt-get update apt-get install libapache2-mod-php7.0 php7.0-curl php7.0-cli php-memcache php-memcached php7.0-mysql php7.0-pgsql php7.0-gd php7.0-imagick php7.0-intl php7.0-mcrypt
Установка PHP 5 как PHP-FPM:
apt-get update apt-get install php5-fpm php5-cli php5-memcache php5-memcached php5-mysql php5-pgsql php5-curl php5-gd php5-imagick php5-intl php5-mcrypt
Установка PHP 7 как PHP-FPM
apt-get update apt-get install php7.0-fpm php7.0-curl php7.0-cli php-memcache php-memcached php7.0-mysql php7.0-pgsql php7.0-gd php7.0-imagick php7.0-intl php7.0-mcrypt
В Debian и Ubuntu зачастую установка модулей PHP не требует каких-то сложных манипуляций. Для того, чтобы посмотреть, что Вы можете поставить прямо сейчас, нужно сделать:
lynx@lnxdsk:~$ apt-cache search php7.0 php-amqp - AMQP extension for PHP php-apcu - APC User Cache for PHP php-all-dev - package depending on all supported PHP development packages php-gearman - PHP wrapper to libgearman php-geoip - GeoIP module for PHP php-gmagick - Provides a wrapper to the GraphicsMagick library php-gnupg - PHP wrapper around the gpgme library php-igbinary - igbinary PHP serializer php-imagick - Provides a wrapper to the ImageMagick library php-libsodium - PHP wrapper for the Sodium cryptographic library php-mailparse - Email message manipulation for PHP php-memcache - memcache extension module for PHP php-memcached - memcached extension module for PHP, uses libmemcached php-mongodb - MongoDB driver for PHP php-msgpack - PHP extension for interfacing with MessagePack php-oauth - OAuth 1.0 consumer and provider extension php-http - PECL HTTP module for PHP Extended HTTP Support php-pinba - Pinba module for PHP php-propro - propro module for PHP php-radius - radius client library for PHP php-raphf - raphf module for PHP php-redis - PHP extension for interfacing with Redis php-rrd - PHP bindings to rrd tool system php-smbclient - PHP wrapper for libsmbclient php-solr - PHP extension for communicating with Apache Solr server php-ssh2 - Bindings for the libssh2 library php-stomp - Streaming Text Oriented Messaging Protocol (STOMP) client module for PHP php-uploadprogress - file upload progress tracking extension for PHP php-uuid - PHP UUID extension php-yac - YAC (Yet Another Cache) for PHP php-yaml - YAML-1.1 parser and emitter for PHP php-zmq - ZeroMQ messaging bindings for PHP php7.0 - server-side, HTML-embedded scripting language (metapackage) php7.0-bcmath - Bcmath module for PHP php7.0-bz2 - bzip2 module for PHP php7.0-cgi - server-side, HTML-embedded scripting language (CGI binary) php7.0-cli - command-line interpreter for the PHP scripting language php7.0-common - documentation, examples and common module for PHP php7.0-curl - CURL module for PHP php7.0-dba - DBA module for PHP php7.0-dev - Files for PHP7.0 module development php7.0-enchant - Enchant module for PHP php7.0-fpm - server-side, HTML-embedded scripting language (FPM-CGI binary) php7.0-gd - GD module for PHP php7.0-gmp - GMP module for PHP php7.0-imap - IMAP module for PHP php7.0-interbase - Interbase module for PHP php7.0-intl - Internationalisation module for PHP php7.0-json - JSON module for PHP php7.0-ldap - LDAP module for PHP php7.0-mbstring - MBSTRING module for PHP php7.0-mcrypt - libmcrypt module for PHP php7.0-mysql - MySQL module for PHP php7.0-odbc - ODBC module for PHP php7.0-opcache - Zend OpCache module for PHP php7.0-pgsql - PostgreSQL module for PHP php7.0-phpdbg - server-side, HTML-embedded scripting language (PHPDBG binary) php7.0-pspell - pspell module for PHP php7.0-readline - readline module for PHP php7.0-recode - recode module for PHP php7.0-snmp - SNMP module for PHP php7.0-soap - SOAP module for PHP php7.0-sqlite3 - SQLite3 module for PHP php7.0-sybase - Sybase module for PHP php7.0-tidy - tidy module for PHP php7.0-xml - DOM, SimpleXML, WDDX, XML, and XSL module for PHP php7.0-xmlrpc - XMLRPC-EPI module for PHP php7.0-xsl - XSL module for PHP (dummy) php7.0-zip - Zip module for PHP
Давайте для примера установим GD для работы с изображениями:
lynx@lnxdsk:~$ sudo apt-get install php7.0-gd Чтение списков пакетов… Готово Построение дерева зависимостей Чтение информации о состоянии… Готово Заметьте, вместо «php7.0-gd» выбирается «php-gd» НОВЫЕ пакеты, которые будут установлены: php-gd обновлено 0, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 148 пакетов не обновлено. Необходимо скачать 350 kБ архивов. После данной операции, объём занятого дискового пространства возрастёт на 1 493 kB. Пол:1 http://mirror.mephi.ru/debian stretch/main amd64 php-gd amd64 2.5.0-1 [350 kB] Получено 350 kБ за 0с (2 266 kБ/c) Выбор ранее не выбранного пакета php-gd. (Чтение базы данных … на данный момент установлено 61175 файлов и каталогов.) Подготовка к распаковке …/php-gd_2.5.0-1_amd64.deb … Распаковывается php-xdebug (2.5.0-1) … Настраивается пакет php-xdebug (2.5.0-1) … После установки нам нужно перезапустить apache (эти примеры я показываю от пользователя root):
root@lnxdsk:~# service apache2 restart
Либо php-fpm, смотря, что используете Вы:
root@lnxdsk:~# service php7.0-fpm restart
Чтобы посмотреть список модулей php, который прямо сейчас подключен, можно запустить:
lynx@lnxdsk:~$ php -m [PHP Modules] bcmath bz2 calendar Core ctype curl date dba dom ereg exif fileinfo filter ftp gd gettext hash iconv intl json libxml mbstring mhash mysql mysqli openssl pcntl pcre PDO pdo_mysql pdo_pgsql pgsql Phar posix readline Reflection session shmop SimpleXML soap sockets SPL standard sysvmsg sysvsem sysvshm tokenizer wddx xdebug xml xmlreader xmlwriter Zend OPcache zip zlib [Zend Modules] Xdebug Zend OPcache
Nginx, Php-Fpm и что это вообще?
Что такое php-fpm и зачем он нужен более-менее посещаемым проектам? Какие неприятности несет в себе переход с apache на fpm? Какие проблемы решает реально, а какие — надуманно?
Почему timeout для curl в php необходим
Использование cURL в PHP имеет свою не очень приятную особенность — вечная блокировка процесса
Угадайте самый медленный фреймворк. И это не Laravel
Есть распространенное мнение, что Laravel почти самый медленный фреймворк, что даже его название нужно читать медленно и только одним пользователем на 1 ядро CPU. Но к счастью, это не так
Curl в PHP
Curl — это библиотека для работы с URL. Она интегрирована во множество языков, в том числе и в PHP.
Сессии в PHP — часть первая для Чайников
Вводная статья о том, как использовать сессии в PHP