Как работает PHP

Хостинг - как работает PHP

В хостинге некоторые решения могут показаться вам нестандартными.
Поэтому перед началом работы мы бы рекомендовали ознакомиться с вводной статьей.

1. Как работать с настройками PHP
2. Как запускается PHP на хостинге
3. Работа с MySQL
4. Работа с Redis
5. Работа с Memcached
6. Работа с npm

1. Как работать с настройками PHP

Для вашего удобства по умолчанию уже включены большинство необходимых для работы PHP модулей, поэтому обычно настройки PHP редактировать не требуется.

Если же есть необходимость изменить настройки PHP, то:

Пример настроек PHP для сайта mydomain.com в контейнере u37663:

Настройки PHP


2. Как запускается PHP на хостинге

На хостинге для запуска PHP мы используем 3 компонента: Nginx, Apache, FastCGI. Рассмотрим каждый из них.

Nginx

Обрабатывает входящие подключения, отдает статические файлы. Перенаправляет запросы в apache.

Apache

Мы используем Apache для совместимости с сайтами, которые полагаются на инструкции в файлах .htaccess.

Поэтому все инструкции в .htaccess обрабатываются стандартным образом.

FastCGI

При создании контейнера можно выбрать, использовать ли современное окружение или старое окружение.

В современном окружении доступны версии PHP от 5.6 до 8.2.

В старом окружении доступны версии PHP от 5.2 до 7.3.

В обоих случаях обработкой PHP занимается FastCGI.

У каждого сайта свой индивидуальный Apache.

3. Работа с MySQL

MySQL доступен только через сокет /run/mysqld/mysqld.sock и недоступен по сети.

Пример подключения к MySQL в PHP при помощи расширения mysqli.

<?php
$servername = "localhost";
$username = "c566_wp_c2_u37663_netangels_ru";
$password = "HeKriDapsonag31";

// Create connection
$conn = mysqli_connect($servername, $username, $password);

// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>

Сохраним этот код в файл mysql.php и разместим в каталоге с сайтом.

Если после открытия этого скрипта в браузере появляется сообщение Connected successfully, то подключение к MySQL прошло успешно.

4. Работа с Redis

На хостинге в Redis данные хранятся только в оперативной памяти и на диск не сохраняются. Из оперативной памяти данные очищаются при перезапуске сервиса, либо пока вы специально не удалите данные.

Пример подключения к Redis из PHP:

<?php
   //Connecting to Redis server on localhost
   $redis = new Redis();
   $redis->connect('127.0.0.1', 6379);
   echo "Connection to server was sucessfull";
   //check whether server is running or not
   echo "<br>Server is running: ".$redis->ping();
?>

Сохраним этот код в файл redis.php и разместим в каталоге с сайтом.

Подключение к Redis прошло успешно, если после открытия скрипта в браузере появляется сообщение

Connection to server was sucessfull
Server is running: +PONG

5. Работа с Memcached

Пример подключения к Memcached и сохранения данных на 300 секунд.

 <?php

 $memcache_obj = memcache_connect('localhost', 11211);

 memcache_set($memcache_obj, 'SC1_Terran_Ground_Units', 'SCV, Marine, Firebat, Medic, Ghost, Vulture, Siege Tank, Goliath', 0, 300);

 echo memcache_get($memcache_obj, 'SC1_Terran_Ground_Units');

 ?>

Сохраним этот код в файл mem.php и разместим в каталоге с сайтом.

Подключение к Memcached прошло успешно, если после открытия скрипта в браузере появляется сообщение

SCV, Marine, Firebat, Medic, Ghost, Vulture, Siege Tank, Goliath

6. Работа с npm

В данном разделе описывается работа сайтов на PHP c npm. Если вы планируете разместить проект на Node.js, пожалуйста, обратитесь к соответствующей статье.

По умолчанию npm и Node.js для сайтов на PHP недоступны, однако некоторым CMS (например, Bitrix или Laravel) иногда необходимы для работы модули, которые возможно установить только с помощью npm. Кроме того, данный способ может подойти, если требуется запустить фоновый процесс, но для такой задачи лучше будет всё же создать отдельный сайт на Node.js.

Для установки Node.js можно воспользоваться утилитой Node Version Manager, которая позволяет установить Node.js локально для контейнера. Подробная информация об NVM доступна на странице проекта в GitHub.

Сама установка выполняется достаточно просто.

c40057@h25:~$ cd sitename.ru/
(php 7.3)c40057@h25:~/sitename.ru$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
(php 7.3)c40057@h25:~/sitename.ru$ source ../.bashrc
(php 7.3)c40057@h25:~/sitename.ru$ nvm install node

Сразу же после можно приступать к установке модулей.

(php 7.3)c40057@h25:~/sitename.ru$ npm install express

В каталоге сайта появится папка node_modules, куда модули и будут установлены.

Если вас интересует определённая версия Node.js, то можно выполнить команду, которая покажет доступные для установки версии.

nvm ls-remote

И далее установить нужную версию, например,

nvm install v20.11

Если вы пользуетесь архивной услугой виртуального хостина или старым окружением актуальной услуги, где версии PHP выше 7.3 недоступны. Тогда стоит рассматривать версии Node.js не выше 11.х.х. Более новые установить не получится.

Поскольку у каждого сайта на хостинге настроено собственное окружение, то при повторной авторизации в контейнер после входа в каталог сайта может потребоваться вновь активировать установленную версию Node.js вот так

nvm use v20.11

Увидеть список установленных версий можно с помощью

nvm ls
Хостинг
Хостинг
Хостинг
Создавайте неограниченное количество сайтов в изолированных контейнерах
С 2003 года
Надежность.
Нам доверяют десятки тысяч компаний и разработчиков
20 лет
Предоставляем услуги профессионального хостинга
35 000
Клиентов доверяют нам размещение своих сайтов
99.99%
Подтвержденный uptime
наших серверов хостинга
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
ВК49865