Настроить рабочее окружение для разработки на PHP в Linux возможно несколькими способами. Рассмотрим один из наиболее быстрых: настройка связки PHP и nginx.

Запустите приложение «Терминал». Ярлык на запуск доступен в менеджере приложений. Сначала обновим локальный индекс пакетов APT.

sudo apt-get update

Настройка веб-сервера

Для работы с PHP нам потребуется веб-сервер. В репозиториях доступно несколько популярных веб-серверов, мы отдадим предпочтение nginx. Он хорошо работает и легко настраивается.

sudo apt-get install nginx

Затем запустим nginx. Запомните эту команду. Она пригодится для добавления новых виртуальных хостов.

sudo service nginx start

nginx установлен и теперь нам требуется выполнить базовое конфигурирование. Наша цель — создать новый виртуальный хост, который будет доступен по адресу yourproject.local, где вместо yourproject может быть название вашего проекта.

Например: doingsdone.localyeticave.local.

Обратите внимание, имена доменов не могут содержать пробелы. Определитесь с именем домена (далее «имя хоста для проекта»). Мы будем ориентироваться на проект yeticave.local, поэтому именно так будем называть конфигурационный файл. Перейдите в директорию sites-available. В этой директории nginx хранит конфигурационные файлы всех виртуальных хостов.

cd /etc/nginx/sites-available

Чтобы увидеть список всех доступных виртуальных хостов, выведите содержимое каталога:

ls -all

Название конфигурационного файла должно совпадать с именем хоста. Поскольку мы планируем сделать конфигурационный файл для хоста yeticave.local, нам потребуется создать файл yeticave.local. Сделаем это:

sudo touch yeticave.local

Файл готов, теперь откроем его в консольном редакторе nano (установлен по умолчанию в большинстве современных дистрибутивов) и опишем минимальную конфигурацию.

sudo nano yeticave.local

Скопируйте в открытый файл yeticave.local ниже приведённый конфигурационный файл. Информацию обо всех непонятных строках вы сможете почерпнуть из официальной документации к nginx.

server {
    # Наш проект будет доступен на 80 порту
        listen 80;
      # Имя виртуального хоста
        server_name yeticave.local;
     # Корневая директория проекта.
        root  /home/administrator/www/yeticave.local;

    # Имя индексного файла.
        index index.php;
       # Настройки отдачи файлов
       location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ {
                access_log off;
                expires max;
                log_not_found off;
        }

        location / {
                try_files $uri $uri/ /index.php?$query_string;
        }

        location ~* \.php$ {
        try_files $uri = 404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;

        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
                deny all;
        }
}

Обратите внимание на номер версии PHP. На момент написания статьи в репозиториях Ubuntu доступна версия 8.1. Если вы пользуетесь более старой версией ОС, то не забудьте обновить номер версии на свой.

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

Для сохранения изменений в файле нажмите комбинацию клавиш ctrl+o. Затем закройте редактор nano сочетанием клавиш ctrl+x.

Протестируем созданный конфигурационный файл на наличие ошибок:

sudo nginx -t

Мы создали конфигурационный файл. Теперь активируем только что созданный виртуальный хост. Для этого перейдём в директорию sites-enabled и создадим в ней символическую ссылку на наш конфигурационный файл.

cd /etc/nginx/sites-enabled/

sudo ln -s /etc/nginx/sites-available/yeticave.local

Если на текущем шаге попытаться открыть браузер и ввести в адресной строке http://yeticave.local, то ничего, кроме ошибки «Сервер не найден», мы не увидим. Исправим проблему добавлением новой записи в hosts:

sudo nano /etc/hosts

В самом начале файла добавьте строку:

127.0.0.1 yeticave.local

Обратите внимание, мы пишем только доменное имя без указания протокола (http). Сохраняем изменения ctrl+o и закрываем редактор nano сочетанием клавиш ctrl+ x.

Установка PHP

Последним компонентом в настройке рабочего окружения станет PHP.

Для начала давайте добавим новый репозиторий, который понадобится для установки свежей версии PHP. Этот репозиторий является официальным источником PHP-пакетов для Debian и Ubuntu:

sudo add-apt-repository ppa:ondrej/php

В окне терминала введите команду для установки php-fpm из репозитория.

sudo apt install php-fpm php-cli php-common php-json php-mysql php-phpdbg php-mbstring php-imap php-dev php-curl php-xdebug

Важно: обязательно обратите внимание на версию PHP. В зависимости от дистрибутива она может отличаться. Если номер версии отличается от той, что мы указали в конфигурационном файле yeticave.local, то необходимо её исправить.

Настройка xdebug

Вводим команду редактирования файла:

sudo nano /etc/php/8.1/mods-available/xdebug.ini

Добавляем в файл конфигурацию для xdebug:

xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.var_display_max_depth = -1
xdebug.var_display_max_children = -1
xdebug.var_display_max_data = -1
xdebug.idekey = "PHPSTORM":

Сохраняем изменения ctrl+o и закрываем редактор nano ctrl+x.

Внесём изменения в конфигурационный файл php, чтобы он выводил все ошибки в браузер, а не только в лог-файл.

sudo nano /etc/php/8.1/fpm/php.ini

Найдём, раскомментируем (уберём знак «;» или исправим значение) и установим значения для строк:

display_errors = On
display_startup_errors = On
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

Сохраняем изменения ctrl+o, закрываем редактор ctrl+x.

Запускаем php-fpm. Выполняем команды:

sudo service php8.1-fpm stop
sudo service php8.1-fpm start

Размещаем файлы проекта в директорию проекта. Директорию проекта вы указали в секции root, конфигурационного файла yeticave.local. Выставляем права:

sudo chmod -R 755 /home/administrator/www/yeticave.local

Открываем браузер и пробуем обратиться к http://yeticave.local.

Всё готово!