Upgrading PHP-FPM with Nginx
This section describes the upgrade process for a system using Nginx as the web server and PHP-FPM to execute PHP code.
First, install the new PHP-FPM package and its dependencies:
You’ll be prompted to continue. Press Enter to complete the installation.
If you are using MySQL, be sure to re-install the PHP MySQL bindings:
Note: If you have made substantial modifications to any configuration files in , those files are still in place, and can be referenced. Configuration files for PHP 7.0 now live in .
Updating Nginx Site(s) to Use New Socket Path
Nginx communicates with PHP-FPM using a Unix domain socket. Sockets map to a path on the filesystem, and our PHP 7 installation uses a new path by default:
PHP 5 | PHP 7 |
---|---|
/var/run/php5-fpm.sock | /var/run/php/php7.0-fpm.sock |
Open the site configuration file with (or your editor of choice):
Your configuration may differ somewhat. Look for a block beginning with , and a line that looks something like . Change this to use .
/etc/nginx/sites-enabled/default
Exit and save the file. In , you can accomplish this by pressing Ctrl-X to exit, y to confirm, and Enter to confirm the filename to overwrite.
You should repeat this process for any other virtual sites defined in which need to support PHP.
Now we can restart :
cPanel
Большинство виртуальных хостингов предлагают cPanel, и если вы тоже используете его, то обновление PHP будет очень простым.
- Войдите в cPanel вашего хостинга
- Найдите версию PHP в верхнем поле
- Нажмите Выбрать версию PHP.
- Щелкните раскрывающийся список рядом с текущей версией PHP и выберите последнюю версию (на момент написания последней версии является 7.4).
- Нажмите «Установить как текущий»
Если на вашей cPanel нет последней версии PHP, скорее всего, ваш хостинг-провайдер ее еще не предлагает. Вы можете связаться со службой поддержки хостинга и узнать, смогут ли они сделать это за вас в фоновом режиме. Если нет, вы можете перейти на платформу, которая поддерживает актуальность своего технологического стека, например на хостинг A2.
Установка PHP 7(php-fpm) с Nginx 1.9 в Debian 8
Недавно, вышла новая версия PHP7
В данной статье «Установка PHP 7 в Debian 8» я хотел бы уделить внимание установки PHP 7 в Debian 8
И так начнем…
Установка nginx 1.9 в Debian 8.
Для начала, добавляем ключ:
Добавляем репозиторий:
И выполняем установку:
Я ленивый иногда, по этому для этой задачи, я написал bash скрипт. Вы можете его тоже использовать:
Установка PHP 7 в Debian 8 с использованием репозитория Dotdeb.
Чтобы установить PHP 7 на Debian 8, но для начала добавляем репозиторий:
После этого, загружаем и запускаем ключ GnuPG:
Обновляем репозиторий:
Запускаем установку PHP как fpm:
Чтобы запустить PHP 7, используйте:
Запуск:
Останавливаем:
Перезапуск:
Чтобы проверить, правильно ли сконфигурирован конфиг php-fpm, используйте:
Ну это простой вариант и взят в качестве примера (что можно использовать данный репозиторий), а дальше, я опишу нормальное решение.
Установка PHP 7 в Debian 8 с исходного кода.
Для начала выполняем установку всех необходимых компонентов и все зависимости для PHP 7:
Я указал все нужные зависимости для моей сборки, вы можете дополнить их (в зависимости от своих нужд). Если не сделать это, то вы получите ошибку в процессе выполнения команды ./configure.
Переходим в директорию, скачиваем и распаковываем архив с php7, для этого выполните команду:
Вы можете использовать другую ссылку (если вышла пхп свежей версии) с официального сайта.
Переходим в папку:
Добавляем нужные модули в свою сборку и указываем параметры:
При необходимости, можно просмотреть весь список доступных модулей:
А сейчас, приступаем к компиляции и собственно к самой установки PHP 7:
Идем далее, копируем конфигурационный файл с php.ini в папку установки PHP:
Подключаем модуль Zend OPcache: /usr/local/php7/etc/conf.d
Прописываем в него:
И так, настроим сейчас PHP-FPM, для этого открываем файл:
И прописываем в него:
И для этого, создаем init.d скрипт:
Назначаем нужные права (исполнение) и добавляем скрипт в автозагрузку своей ОС:
Чтобы запустить (в данном случае перезапусить) php7-fpm выполняем:
Если используете PHP-FPM с Nginx, то нужно добавьте в блок server виртуального хоста следующий текст:
PS: Для всего этого, я написал bash скрипт, вы можете его использовать для своих нужд:
Осталось только перезапустить все службы:
Вот и все!
Чтобы проверить, правильно ли сконфигурирован конфиг php-fpm, используйте:
SimpleXML: Резюме
- SimpleXML — очень удобный выбор, поскольку он встроен в PHP начиная с версии 5 и доступен на всех серверах, поддерживающих PHP.
- Это парсер на основе дерева. Следовательно, вам необходимо понимать структуру документа, который вы собираетесь анализировать. Элемент в XML-документе классифицируется как SimpleXMLElement.
- SimpleXML позволяет обрабатывать XML-файлы как полезные структуры данных: вы можете легко извлекать определенное содержимое, атрибуты или имена элементов. По сути, он превращает PHP XML в массив.
- По сравнению с парсерами Expat или DOM, ему требуется меньше строк кода для правильного анализа XML-данных PHP.
Назад
Вперёд
Установка NGINX
Устанавливаем NGINX:
apt-get install nginx
Внесем изменение в файл nginx.conf:
vi /etc/nginx/nginx.conf
http {
…
server_names_hash_bucket_size 64;
….
}
* в данном примере мы сняли комментарий со строчки server_names_hash_bucket_size 64;* на практике, может встретиться ошибка could not build server_names_hash, you should increase server_names_hash_bucket_size: 32. Она возникает при большом количестве виртуальных серверов или если один из них будет иметь длинное название. Данная строка в конфиге исправит ситуацию.
Запускаем nginx:
systemctl enable nginx
systemctl start nginx
* в процессе запуска мы можем увидим ошибку — возможно, в системе работает другой веб-сервер и занимает 80 порт. Как правило, это apache. Чтобы его выключить (на данном этапе он нам не нужен) вводим команду systemctl stop apache2.
Проверим работу веб-сервера. Открываем браузер и вводим в адресной строке http://. В итоге мы должны увидеть заголовок «Welcome to nginx!»:
Если стартовая страница не загружается, проверяем состояние сервиса:
systemctl status nginx
Чтение XML-данных из строки
Когда наша работа требует, чтобы PHP читал данные XML-документа из строки, мы используем функцию с именем .
Представьте, что у нас есть переменная $my_data, содержащая данные XML. В следующем примере кода показано, как это будет выглядеть при первом объявлении:
Пример
Скопировать
В приведенном ниже примере, функция PHP используется для чтения XML-данных прямо из ранее упомянутой переменной:
Пример
Попробуй сам
Результат выполнения кода:
SimpleXMLElement Object ( => You => Me => The Game => You lost it. )
Чтобы поймать все ошибки и затем просмотреть их во время загрузки XML-файла PHP, вы можете использовать функции .
В следующем примере предпринимается попытка загрузить неработающую строку XML:
Пример
Попробуй сам
Результат выполнения кода:
Failed to load XML:
Opening and ending tag mismatch: to line 3 and wrong
Opening and ending tag mismatch: from line 4 and wrong
Opening and ending tag mismatch: heading line 5 and wrong
Opening and ending tag mismatch: body line 6 and wrong
Шаг 2. — Установка PHP7.2 на Ubuntu 18.04
Нужно добавить репозиторий чтобы все пакеты PHP7.2 нормально установились.(Рис.2)
sudo add-apt-repository ppa:ondrej/php
Рис.2 — Добавляем репозиторий для установки PHP7.2.
Обновляем список пакетов:
sudo apt update
Переходим к установке PHP7.2.(Рис.3)
sudo apt -y install php7.2 php7.2-fpm php7.2-mysql php7.2-mbstring php7.2-xml php7.2-gd php7.2-curl php-common php7.2-cli php7.2-common php7.2-json php7.2-opcache php7.2-readline
Если вы устанавливаете PHP7.2 для веб-сервера Apache, то требуется установить ещё один пакет libapache2-mod-php. Для того чтобы PHP-код у вас работал на Apache, а не просто отображал код в браузере:
sudo apt -y install php libapache2-mod-php
Пакеты я устанавливал по отдельности для проверки все они успешно установились. Пакеты php-common, php7.2-cli, php7.2-common, php7.2-json, php7.2-opcache, php7.2-readline скорее всего установятся вместе с предыдущими пакетами, которые написаны в начале этой длинной команды и вы получите в ответ «Уже установлен пакет … самой новой версии».
Рис.3 — Установка PHP7.2.
Проверяем статус php7.2-fpm.(Рис.4)
sudo service php7.2-fpm status
Рис.4 — Проверяем статус php7.2-fpm.
У меня php7.2-fpm запустился. Об этом свидетельствует строчка — «Active: active (running)», также отсутствуют ошибки.
И php7.2-fpm добавлен в автозагрузку. Это мы понимаем по слову «enabled;» В строке «Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; «.
Если у вас не запустился или не добавился в автозагрузку php7.2-fpm, то воспользуйтесь командами:
Запускаем php7.2-fpm.
sudo service php7.2-fpm start
Добавляем php7.2-fpm в автозагрузку.
sudo systemctl enable php7.2-fpm
Доработка только для Nginx
Если у вас веб-сервер Apache, то переходите к следующему шагу —
Для того чтобы PHP-FPM заработал с Nginx, необходимо отредактировать конфигурационный файл виртуального хоста. Так как у нас чистый Nginx мы не создавали новые конфигурационные файлы и не вносили изменения в существующие, то у нас доступен один стандартный конфигурационный файл виртуального хоста — /etc/nginx/sites-available/default, приступаем к его редактирванию.
sudo nano /etc/nginx/sites-available/default
Найдите данный фрагмент и приведите его к следующему виду.(Рис.5) :
Рис.5 — Редактирования файла виртуального хоста default.
location ~ \.php$ { include snippets/fastcgi-php.conf; # With php-fpm (or other unix sockets): fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; # With php-cgi (or other tcp sockets): # fastcgi_pass 127.0.0.1:9000; }
Сохраняем(Ctrl+o -> Enter) и закрываем(Ctrl+x -> Enter) конфигурационный файл.
Чтобы изменения применились нужно, чтобы Nginx перечитал конфигурационные файлы — делаем reload.
sudo service nginx reload
Настройка php 7.1
Настройка php будет заключаться в следующем:
- Устранение уязвимостей
- Увеличение размера загружаемого файла
- Увеличение времени работы скрипта
- Настройка opcache
Открываем php.ini
sudo nano /etc/php/7.1/fpm/php.ini
ищем строчку
;cgi.fix_pathinfo = 1
раскомментируем строчку и поставим за место единицы 0
cgi.fix_pathinfo = 0
Увеличим размер загружаемых файлов. Находим post_max_size и приводим к виду
post_max_size = 100M
Увеличим время обработки скрипта, ищем max_execution_time выставив 300 секунд — обычно нужно для работы с большими таблицами mysql
max_execution_time = 300
Далее ищем opcache. Приводим данные директивы к такому виду:
opcache.enable=1 opcache.enable_cli=1 opcache.memory_consumption=64 opcache.interned_strings_buffer=4 opcache.max_accelerated_files=7963 opcache.revalidate_freq=20
Сохраняем файл. Перезапускаем php7.1-fpm
service php7.1-fpm restart
Устанавливаем MySQL сервер и phpmyadmin
sudo apt install mysql-server-5.7
Во время установки нас попросит задать пароль для администратора mysql сервера. Выполните просьбу.
Все готово. Теперь установим менеджер работы с базами данных
sudo apt install phpmyadmin
При установке скорее всего попросит выбрать вебсервер, выберите любой, если попросит задать пароль для базы задайте.
Теперь сделаем символьную ссылку на директорию где у нас будет лежать сайт
ln -s /usr/share/phpmyadmin /var/www/html/my.site.ru
Зайти в менеджер базых можно будет по адресу
my.site.ru/phpmyadmin/
В будущем можно создать свой конффигурационный файл nginx для менеджера баз данных phpmyaadmin, и перенести его на поддомен типа mysql.my.site.ru, и поставить серверную авторизацию.
Установка PHP 7.2
Установка базовых пакетов для работы с PHP 7.2:
1 | apt-get install php7.2php7.2-common php7.2-cli |
Список всех пакетов для работы с PHP 7.2:
1 |
php7.2-bcmath-Bcmath module forPHP php7.2-bz2-bzip2 module forPHP php7.2-cgi-server-side,HTML-embedded scripting language(CGI binary) php7.2-cli-command-line interpreter forthe PHP scripting language php7.2-common-documentation,examples and common module forPHP php7.2-curl-CURL module forPHP php7.2-dba-DBA module forPHP php7.2-dev-Files forPHP7.2module development php7.2-enchant-Enchant module forPHP php7.2-fpm-server-side,HTML-embedded scripting language(FPM-CGI binary) php7.2-gd-GD module forPHP php7.2-gmp-GMP module forPHP php7.2-imap-IMAP module forPHP php7.2-interbase-Interbase module forPHP php7.2-intl-Internationalisation module forPHP php7.2-json-JSON module forPHP php7.2-ldap-LDAP module forPHP php7.2-mbstring-MBSTRING module forPHP php7.2-mysql-MySQL module forPHP php7.2-odbc-ODBC module forPHP php7.2-opcache-Zend OpCache module forPHP php7.2-pgsql-PostgreSQL module forPHP php7.2-phpdbg-server-side,HTML-embedded scripting language(PHPDBG binary) php7.2-pspell-pspell module forPHP php7.2-readline-readline module forPHP php7.2-recode-recode module forPHP php7.2-snmp-SNMP module forPHP php7.2-soap-SOAP module forPHP php7.2-sodium-libsodium module forPHP php7.2-sqlite3-SQLite3 module forPHP php7.2-sybase-Sybase module forPHP php7.2-tidy-tidy module forPHP php7.2-xml-DOM,SimpleXML,WDDX,XML,and XSL module forPHP php7.2-xmlrpc-XMLRPC-EPI module forPHP php7.2-xsl-XSL module forPHP(dummy) php7.2-zip-Zip module forPHP |
Speed up PHP by using an opcode cache
You can improve the performance of your PHP by using a caching method. We’ll use APCu, but there are other alternatives available.
If you have the ‘php-pear’ module installed (we included it in our instructions above), you can install APCu with the following command:
pecl install apcu
There are also other ways you can install APCu, including using a package.
To start using APCu, you should run the following command for PHP 7.2:
echo "extension=apcu.so" | tee -a /etc/php/7.2/mods-available/cache.ini
Or this command for PHP 7.3:
echo "extension=apcu.so" | tee -a /etc/php/7.3/mods-available/cache.ini
And the following command for PHP 7.4:
echo "extension=apcu.so" | tee -a /etc/php/7.4/mods-available/cache.ini
If you’re following our LAMP tutorials and you’re using Apache, create a symlink for the file you’ve just created.
For PHP 7.2:
ln -s /etc/php/7.2/mods-available/cache.ini /etc/php/7.2/apache2/conf.d/30-cache.ini
For PHP 7.3:
ln -s /etc/php/7.3/mods-available/cache.ini /etc/php/7.3/apache2/conf.d/30-cache.ini
For PHP 7.4:
ln -s /etc/php/7.4/mods-available/cache.ini /etc/php/7.4/apache2/conf.d/30-cache.ini
And finally, reload Apache for the changes to take effect:
systemctl restart apache2
To further configure APCu and how it works, you can add some additional lines to the cache.ini file you previously created. The best configuration depends on what kind of server you’re using, what applications you are using etc. Either google it and find a configuration that works for you, or contact professionals and let them do it for you.
Testing PHP
With a web server configured and the new packages installed, we should be able to verify that PHP is up and running. Begin by checking the installed version of PHP at the command line:
You can also create a test file in the web server’s document root. Depending on your server and configuration, this may be one of:
Using , open a new file called in the document root. By default, on Apache, this would be:
On Nginx, you might instead use:
Paste the following code:
info.php
Exit the editor, saving . Now, load the following address in your browser:
You should see PHP version and configuration info for PHP 7. Once you’ve double-checked this, it’s safest to to delete :
Install PHP 7.4 on Ubuntu
PHP 7.4 is the latest stable version is available for installation. Use the following set of commands to enable PPA for PHP 7.4 in your Ubuntu system and install it. You can use this version for production use also.
sudo apt-get install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt-get update sudo apt-get install -y php7.4
Now use the following command to check installed php version on your system.
php -v PHP 7.4.5 (cli) (built: Apr 28 2020 14:49:23) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.5, Copyright (c), by Zend Technologies
Шаг 4 — Тестирование сайтов
Мы настроили два сайта для работы с двумя разными версиями PHP. Теперь проверим результаты.
Откройте в браузере сайты и . Вы увидите две страницы, выглядящие следующим образом:
Обратите внимание на заголовки. На первой странице указано, что на сайте развернута версия PHP 7.0
На второй странице указано, что на сайте развернута версия PHP 7.2.
Мы протестировали сайты и теперь можем удалить файлы . Эти файлы представляют собой угрозу безопасности, поскольку они содержат важную информацию о вашем сервере и при этом доступны неуполномоченным пользователям. Удалите файлы:
Теперь у вас имеется один сервер CentOS 7, обслуживающий два сайта с двумя разными версиями PHP. Однако PHP-FPM можно применять и для других целей.
Parameter Values
Parameter | Description |
---|---|
file | Required. Specifies the path to the XML file |
class | Optional. Specifies the class of the new object |
options | Optional. Specifies additional Libxml parameters. Is set by specifying the option and 1 or 0 (TRUE or FALSE, e.g. LIBXML_NOBLANKS(1))
Possible values:
|
ns | Optional. Specifies a namespace prefix or URI |
is_prefix | Optional. Specifies a Boolean value. TRUE if ns is a prefix. FALSE if ns is a URI. Default is FALSE |
Установка PHP в Ubuntu
Предполагается, что у вас уже установлен какой-нибудь PHP версии 7.x. Если нет, то давайте это исправим:
apt-get update && apt-get upgrade
apt-get install software-properties-common
add-apt-repository ppa:ondrej/php
apt-get update
apt-get install php7.2
apt-get install php-pear php7.2-curl php7.2-dev php7.2-gd php7.2-mbstring php7.2-zip php7.2-mysql php7.2-xml
1 |
apt-get update&&apt-get upgrade apt-get install software-properties-common add-apt-repository ppaondrejphp apt-get update apt-get install php7.2 apt-get install php-pear php7.2-curl php7.2-dev php7.2-gd php7.2-mbstring php7.2-zip php7.2-mysql php7.2-xml |
Теперь, например устанавливаем версию 5.6:
sudo apt install php5.6
1 | sudo apt install php5.6 |
После всех этих команд на вашей машине установлены 7.2 и 5.6 версии. Выведем список всех установленных версий в меню, которое позволит выбрать нужную версию:
sudo update-alternatives —config php
1 | sudo update-alternatives—config php |
После этого вы увидите примерно такое:
There are 2 choices for the alternative php (providing /usr/bin/php).
Selection Path Priority Status
————————————————————
* 0 /usr/bin/php7.2 72 auto mode
1 /usr/bin/php5.6 56 manual mode
2 /usr/bin/php7.2 72 manual mode
Press <enter> to keep the current choice, or type selection number:
1 |
There are2choices forthe alternative php(providingusrbinphp). Selection Path Priority Status ———————————————————— *usrbinphp7.272auto mode 1usrbinphp5.656manual mode 2usrbinphp7.272manual mode Press<enter>tokeep the current choice*,ortype selection number |
В коде выше можно выбрать например пункт — 1 и тогда версия переключится на 5.6. Проверить это можно следующей командой:
php -v
1 | php-v |
Которая вернет примерно такое сообщение:
PHP 5.6.38+deb.sury.org+2 (cli)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
1 |
PHP5.6.38+deb.sury.org+2(cli) Copyright(c)1997-2016The PHP Group Zend Engine v2.6.0,Copyright(c)1998-2016Zend Technologies with Zend OPcache v7.0.6-dev,Copyright(c)1999-2016,by Zend Technologies |
Таким образом, теперь вы можете легко менять свои версии даже легче чем в Open Server
Install PHP 7.1 on Ubuntu
Use the following set of commands to add PPA for PHP 7 in your Ubuntu system and install PHP 7.1 version.
sudo apt-get install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt-get update sudo apt-get install -y php7.1
Now use the following command to check installed php version on your system.
php -v PHP 7.1.27-1+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Mar 7 2019 20:02:25) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.1.27-1+ubuntu18.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
Install PHP 7.1 on Ubuntu
Use the following set of commands to add PPA for PHP 7 in your Ubuntu system and install PHP 7.1 version.
sudo apt-get install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt-get update sudo apt-get install -y php7.1
Now use the following command to check installed php version on your system.
php -v PHP 7.1.27-1+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Mar 7 2019 20:02:25) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.1.27-1+ubuntu18.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
Тестирование PHP
Теперь веб-сервер настроен, все новые пакеты установлены. Нужно убедиться, что обновление прошло успешно.
Запросите версию PHP:
Также можно создать тестовый файл в каталоге document root веб-сервера. В зависимости от используемого сервера и настройки это может быть один из этих каталогов:
- /var/www/html
- /var/www/
- /usr/share/nginx/html
При помощи nano откройте новый файл info.php в каталоге document root. По умолчанию для Apache это каталог:
Для Nginx:
Вставьте в файл следующий код:
Закройте редактор и сохраните файл. Теперь откройте файл в браузере:
Появившаяся на экране страница указывает версию PHP и предоставляет данные о настройке PHP 7. После проверки рекомендуется удалить файл info.php, так как он содержит конфиденциальные данные.
Обновление PHP-FPM на Nginx
Инструкции, которые вы найдете в этом разделе, подойдут тем, кто использует в качестве веб-сервера Nginx, а PHP-код выполняется через менеджер процессов PHP-FPM.
Для начала установите новый пакет PHP-FPM и его зависимости:
$ sudo apt-get install php7.0-fpm
Для завершения установки вам нужно нажать Enter.
Всем пользователям MySQL необходимо убедиться, что они повторно добавили обновленные двухсторонние биндинги PHP MySQL:
$ sudo apt-get install php7.0-mysql
Примечание.
Если вы делали какие-то значительные изменения в файлах конфигурации в /etc/php5/, они будут все еще доступны. Конфигурационные файлы для PHP 7 вы можете найти в /etc/php/7.0.
Обновление PHP-FPM для Nginx
Этот раздел содержит инструкции по обновлению PHP-FPM для поддержки новой версии PHP.
Установите пакеты новой версии PHP и её зависимостей:
Нажмите Enter, чтобы продолжить.
При использовании MySQL нужно переустановить связки PHP:
Примечание: Если вы вносили существенные изменения в конфигурационные файлы в /etc/php5/, на них по-прежнему можно ссылаться, они не удалены. Конфигурационные файлы PHP 7.0 хранятся в /etc/php/7.0
Настройка сокетов Nginx
Nginx взаимодействует с PHP-FPM при помощи сокетов Unix. Сокеты задают пути в файловой системе; по умолчанию установка PHP 7 использует новый путь.
PHP 5 | PHP 7 |
/var/run/php5-fpm.sock | /var/run/php/php7.0-fpm.sock |
Откройте конфигурационный файл default:
Примечание: Приведённые здесь настройки могут отличаться от ваших.
Найдите блок location ~ \.php$ {, и строку, которая выглядит примерно так:
Отредактируйте её следующим образом:
Теперь блок выглядит так:
Сохраните и закройте файл.
Если у вас несколько сайтов, повторите этот процесс в конфигурационных файлах всех сайтов, добавленных в /etc/nginx/sites-enabled, если они должны поддерживать PHP.
Перезапустите nginx:
Тестирование PHP
После того, как вы настроили веб-сервер и установили новые пакеты, необходимо проверить, что PHP работает. Для начала проверьте, какая версия PHP установлена, используя команду:
$ php –v
На экране высветится сообщение с необходимой информацией.
Создание тестового файла возможно и в корневом каталоге документов веб-сервера. В зависимости от того, какой у вас веб-сервер и конфигурация, это может быть один из следующих вариантов:
- /var/www/html
- /var/www/
- /usr/share/nginx/html
Используя редактор nano, откройте файл info.php в корневом каталоге документов. По умолчанию в Apache этот путь:
$ sudo nano /var/www/html/info.php
В Nginx этот путь выглядит так:
$ sudo nano /usr/share/nginx/html/info.php
Скопируйте туда следующий код:
<?php phpinfo(); ?>
Выйдите из редактора, сохранив info.php. Теперь загрузите в своем браузере следующую страницу:
http://домен_или_IP/info.php
На экране должна высветиться версия PHP, а также данные, касающиеся конфигурации для PHP 7. После того, как вы все проверите, советуем удалить info.php:
$ sudo rm /var/www/html/info.php
Добавление PPA для пакетов PHP7
Персональные архивы пакетов (PPA) представляют собой пакеты, которые обычно создаются и распространяются в репозиториях, специальных серверах-хранилищах для таких файлов. launchpad.net – сервис, созданный для поддержки и развития подобных свободных проектов. Именно там вы можете найти бета-версии, модифицированные сборки и ретроподдержки для более старых версий операционной системы.
$ sudo add-apt-repository ppa:ondrej/php
После того, как на экране высветилось описание пакета PPA, нажмите Enter.
Примечание.
Если в вашей локали установлена не UTF-8 кодировка, тогда при установке PPA может возникнуть ошибка, связанная с обработкой букв имени автора. В качестве временного решения вы можете установить language-pack-en-base, и, когда локали сгенерированы, заместить настройки локали системы в то время, как добавляется PPA:
$ sudo apt-get install -y language-pack-en-base $ sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
После того, как пакет PPA установлен, вам необходимо обновить кэш локального пакета. Это нужно для того, чтобы локальный пакет включал содержание PPA:
$ sudo apt-get update
После того, как вы получили доступ к пакетам PHP 7.0, можно заменить уже установленную версию PHP.
How to Install PHP 7.2 on Ubuntu 16.04
PHP 7.2 is a stable version of PHP and has many new features, improvements, and bug fixes. You should definitely use it if you want a better, faster website/application.
Of course, as always, first update Ubuntu:
apt-get update && apt-get upgrade
Add the PHP repository
You can use a third-party repository to install the latest version of PHP. We’ll use the repository by Ondřej Surý.
First, make sure you have the following package installed so you can add repositories:
apt-get install software-properties-common
Next, add the PHP repository from Ondřej:
add-apt-repository ppa:ondrej/php
And finally, update your package list:
apt-get update
Install PHP 7.2
After you’ve added the repository, you can install PHP 7.2 with the following command:
apt-get install php7.2
This command will install additional packages:
- libapache2-mod-php7.2
- libargon2-0
- libsodium23
- libssl1.1
- php7.2-cli
- php7.2-common
- php7.2-json
- php7.2-opcache
- php7.2-readline
And that’s it. To check if PHP 7.2 is installed on your server, run the following command:
php -v
Install PHP 7.2 modules
You may need additional packages and modules depending on your applications. The most commonly used modules can be installed with the following command:
apt-get install php-pear php7.2-curl php7.2-dev php7.2-gd php7.2-mbstring php7.2-zip php7.2-mysql php7.2-xml
And that’s all. You can now start using PHP on your Ubuntu server.
If you want to further tweak and configure your PHP, read our instructions below.
Adding a PPA for PHP 7.0 Packages
A Personal Package Archive, or PPA, is an Apt repository hosted on Launchpad. PPAs allow third-party developers to build and distribute packages for Ubuntu outside of the official channels. They’re often useful sources of beta software, modified builds, and backports to older releases of the operating system.
Ondřej Surý maintains the PHP packages for Debian, and offers a PPA for PHP 7.0 on Ubuntu. Before doing anything else, log in to your system, and add Ondřej’s PPA to the system’s Apt sources:
You’ll see a description of the PPA, followed by a prompt to continue. Press Enter to proceed.
Note: If your system’s locale is set to anything other than UTF-8, adding the PPA may fail due to a bug handling characters in the author’s name. As a workaround, you can install to make sure that locales are generated, and override system-wide locale settings while adding the PPA:
Once the PPA is installed, update the local package cache to include its contents:
Now that we have access to packages for PHP 7.0, we can replace the existing PHP installation.
Шаг 3. — Проверка — info.php
Для того чтобы проверить PHP-FPM и узнать подробную информацию о PHP, нужно создать файл info.php в каталоге html вэб-сервера, вписать в него специальную строчку php-кода, для отображения информации, и в браузере открыть страницу IP-адрес/info.php. Приступим!
Проверка PHP для вэб-серверов Apache и Nginx одинаковая:
Создаём файл info.php.
sudo touch /var/www/html/info.php
Вписываем в файл info.php строчку <?php phpinfo(); ?>. Сделал это одной командой, так быстрее вам будет скопипастить.
sudo sh -c "echo '<?php phpinfo(); ?>' >> /var/www/html/info.php"
Проверим, через cat, вписалась ли строчка в файл info.php.
cat /var/www/html/info.php
У меня всё ок! Теперь в браузере по адресу 192.168.3.8/info.php можно увидеть всю информацию о PHP установленном нашем сервере.(Рис.6) Это значит что PHP корректно работает на нашем Apache или Nginx.
Рис.6 — Информация о PHP в браузере.
В целях безопасности файл info.php лучше удалить, чтобы скрыть информацию от хакеров.
sudo rm /var/www/html/info.php
У меня всё!
Поделиться публикацией
Была ли вам полезна статья? Есть возможность
поддержать проект.
CentOS 8.x
Вы можете легко обновить PHP на CentOS 8.x следующим образом.
CentOS 8 по умолчанию предоставит вам PHP 7.2.
Допустим, вам нужно обновить его до последней версии 7.4.
Первым делом вам необходимо установить репозиторий REMI с помощью команды DNF.
Пример:
Давайте перечислим доступный модуль PHP с помощью после добавления репозитория REMI.
Как видите, 7.2 по умолчанию и включен, но можно активировать другую версию, например 7.3, 7.4 и 8.0. PHP 8.0 все еще находится в стадии бета-тестирования, поэтому его не рекомендуется использовать для работающего сайта.
Включим 7.4.
После включения вы должны запустить команду списка модулей для проверки.
Как вы можете видеть выше, теперь включена версия 7.4.
И, наконец, мы можем установить PHP 7.4, как показано ниже.
После этого проверьте версию для проверки.
Вы хотите поиграть с бета-версией PHP 8.0?
Если да, то выполните команду ниже.
А затем проверьте установленную версию PHP.
PHP расширения
Дополнительный функционал в PHP реализован с помощью расширений. Некоторые расширения могут сразу поставляться с интерпретатором, а некоторые расширения следует устанавливать дополнительно.
Установка
Для того, чтобы подключить к PHP необходимое расширение, надо установить его. Ниже показаны примеры установки некоторых расширений.
Подключение расширения GD:
sudo apt-get install php-gd
Подключение расширения MySQL:
sudo apt-get install php-mysql
Подключение расширения Mcrypt:
sudo apt-get install php-mcrypt
Настройка
Файлы настроек доступных расширений располагаются в директории . У каждого варианта запуска интерпретатора существует своя директория в которой находятся символьные ссылки на активные расширения.
Установка PHP 8 для NGINX сервера Ubuntu
В отличие от Apache, NGINX не имеет встроенных возможностей для обработки PHP-документов. Чтобы обойти эту проблему, вам нужно установить PHP-FPM (то есть PHP FastCGI Process Manager) и настроить его для работы с NGINX.
Первое что требуется это убедится в том, что вы добавили репозиторий ondre/php.
Кроме того, проверьте наличие обновлений пакета с помощью команды:
Чтобы установить PHP-FPM 8.0 на Ubuntu 20.04, выполните приведенную ниже команду.
Теперь проверьте версию PHP с помощью команды:
Затем откройте файл блока сервера NGINX по умолчанию, делается это следующим образом.
Прокрутите вниз, пока не дойдете до строки, начинающейся с index, а затем добавьте index.php к списку, как показано на рисунке ниже.
Добавить index.php директива to NGINX index
Прокрутите страницу вниз еще дальше, пока не увидите раздел # pass PHP scripts to FastCGI server. Измените эту часть конфигурационного файла так, чтобы она выглядела так, как вы видите в приведенном ниже блоке кода.
Обратите внимание, что определенные строки были раскомментированы, а php7.4-fpm.sock был заменен на php8.0-fpm.sock. Сохраните внесенные изменения и закройте файл блокировки сервера
Сохраните внесенные изменения и закройте файл блокировки сервера.
Тест PHP 8 на NGINX
Чтобы убедиться, что после установки PHP 8, он правильно работает с NGINX. Создайте index.php файл в корне документа по умолчанию.
Скопируйте и вставьте приведенный ниже пример PHP — кода в текстовый редактор.
Сохраните и закройте index.php файл.
И последнее, откройте веб-браузер и перейдите к server IP/index.php… Заменив serverIP на ваш фактический IP-адрес сервера.
Если вы видите страницу PHP версии 8.0.3 info, то вы все сделали правильно.
PHP Версия 8.0.3 страница на NGINX