3
декабрь
2020
Настройка рабочего места разработчика PHP
15:27

Настройка рабочего места разработчика PHP

3 декабрь 2020 15:27

Статья посвящена настройке веб-сервера, PDT в Eclipse, Composer и TWIG. Обновлено '2024!

Установка веб-сервера, PHP и MySQL

В Windows первым делом необходимо скачать и установить готовый дистрибутив веб-сервера XAMPP https://www.xampp.ru/, который содержит MariaDB (аналог системы управления базами данных MySQL) и PHP 7.3.6.
В Linux можно установить Apache, MySQL и PHP (
sudo apt-get update
sudo apt-get install tasksel
sudo tasksel install lamp-server
), вместо веб сервера Apache2 можно использовать встроенный в PHP веб-сервер (php -S localhost:8000).

Установка Eclipse IDE и набор PDT для разработки на языке PHP

Затем в Windows и Linux скачать установочный файл среды разработки Eclipse IDE. После перехода на страницу загрузки пакетов https://www.eclipse.org/downloads/packages/ необходимо скачать версию "Eclipse IDE for Enterprise Java and Web Developers" для Linux x86_64 (объёмом около 528 МБ).

eclipse-web-installer
Имя файла: eclipse-jee-(номер версии)-linux-gtk-x86_64.tar.gz. После загрузки, необходимо открыть файл с расширением .tar.gz в Xarchiver и извлечь его в папку /home/(имя пользователя)/opt с полным путём. Например: /home/vladimir/opt.

extract

Либо выполните команды для извлечения Eclipse из архива в папку ~/opt:

mkdir ~/opt
mkdir ~/eclipse-workspace
tar xf eclipse-jee-*-linux-gtk-x86_64.tar.gz -C ~/opt --warning=no-unknown-keyword

Перед началом установки Eclipse проверьте наличие свободного пространства на жестком диске — не менее 2 ГБ.

В Windows нужно дополнительно установить бесплатную сборку Java в папку jre.

Внимание: Виртуальная машина JRE загруженная с сайта Java.com работать не будет. Нужно загрузить из другого источника - Open JDK (https://jdk.java.net/15/ - Windows x64).
То есть если среда разработки Eclipse установлена в папку C:\Eclipse , ставим java Open JDK в папку C:\Eclipse\jre

В Linux исполнимый файл лежит вы папке /home/(имя пользователя)/opt/eclipse/
Для запуска Eclipse, в Linux создаем и сохраняем на Рабочем Столе файл-ярлык Eclipse.desktop, с содержимым:
[Desktop Entry]
Version=1.0
Type=Application
Name=Eclipse
Comment=
Exec=/home/user/opt/eclipse/eclipse
Icon=/home/user/opt/eclipse/icon.xpm
Path=/home/user/eclipse-workspace/
Terminal=false
StartupNotify=false

Либо создаём ярлык в GUI: нажимаем правую кнопку мыши и выбираем пункт "Создать значок запуска":
create_shortcut
Настройка параметров для ярлыка:
eclipse_shortcut
Картинку значка: выбираем в папке /home/имя_пользователя/opt/eclipse/ файл icon.xpm.


Запускаем Eclipse с рабочего стола:
значёк Eclipse
При первом запуске подтверждаем папку для хранения файлов eclipse-workspaces.

Чтобы иметь возможность программировать на языке PHP, нужно в Eclipse добавить в меню поддержку динамических языков DLTK и расширения для программирования на PHP (PHP Development Tools - PDT):

  • "Help" - "Instal New Software" - "Add" - Name: "DLTK 6.4" - Location: "https://download.eclipse.org/technology/dltk/updates-dev/6.4/" - "Add" - выбрать "Dynamic Languages Toolkit (DLTK)" - и выполнить установку: "Next" - "Next" - "I accept the terms ..." - "Finish".
  • Перезапуск Eclipse IDE - "Restart Now"
  • "Help" - "Instal New Software" - "Add" - Name: "Updates 8.2" - Location: "https://download.eclipse.org/tools/pdt/updates/8.2/" - "Add" - "PHP Development Tools" - и выполнить установку: "Next" - "Next" - "I accept the terms ..." - "Finish".
  • Перезапуск Eclipse IDE - "Restart Now"

Завершаем установку PDT: "Help" - "Eclipse Marketplace..." - в поле текста "Find" вводим "PHP", в соседнем поле: "Eclipse Project" и Enter (или кнопка "Go").
выбор компонента php tools

Затем выбрать самый верхний, обязательный пункт: "PHP Development Tools (PDT)", остальные галочки можно снять.
выбрать компонент PHP Development Tools (PDT)

После нажатия "Confirm" будет запрошено принятие лицензии Eclipse: - Выбирал нужный пункт - "I accept", "Finish".
Согласие на лицензию Eclipse - I accept, Finish

После окончания установки PDT, выполнить перезагрузку Eclipse.

(По желанию) устанавливаем полезный плагин для шаблонизатора Twig:

  • "Help" - "Eclipse Marketplace..." - в поле текста "Find" вводим "twig plugin" и Enter. - "Install"- "Accept" - "Finish".

(Последнее обновление - январь 2024)



Установка Composer (для ускоренной установки фреймворков)

  1. Создаем каталог установки composer и удаляем следы предыдущей установки
    sudo rmdir /usr/local/bin/composer
    sudo mv ~/.composer ~/.composer.old
    2, Создаем папку .composer в папке пользователя:
    mkdir ~/.composer

  2. Скачиваем программу установки Composer с официального сайта
    https://getcomposer.org/installer -> файл сохраняется в папке "Загрузки".

  3. Переименовать файл инсталлятора и подготовить к запуску
    cd ~/Загрузки
    mv installer ~/composer-setup.php
    cd ..

  4. Запуск установки и обновления Composer двумя командами:
    php composer-setup.php
    php composer.phar self-update


Создаем первый проект и файл PHP:

  • Создаём проект File - New - PHP Project
  • Project name - test

Создание в Eclipse нового проекта PHP в меню File -New - PHP Project

в папке /home/vladimir/workspace/test (заменить на свою)
Если не видно дерево проекта, разворачиваем его с помощью Project Explorer.

File - New - PHP File - вставляем текст из примера ниже. (Имя файла - index.php).
Новый файл PHP

Настройка Eclipse

0.. Тёмная тема Eclipse - Window - Preferences - General - Appearance - Enable Theming - Theme - Dark - Apply and Close.

  1. Указываем размещение PHP
    "Window" - "Preferences" - "PHP" - "Installed PHPs" - "Add"
    Name - PHP
    расположение Execution path - /usr/bin/php
    Кнопка "Finish".
    указание установленного php

Следующие настройки не точны и подлежат ревизии.

  1. Указываем встроенный веб сервер пакета php
    "Window" - "Preferences" - "PHP" - "Servers"
    Удаляем по умолчанию
    Add
    Server name - любое, например "localhost:8000"
    Base URL - http://localhost:8000
    Document root - /home/vladimir/workspace (заменить на свой)

Отмечу, что я решил запускать на порту 8000, поэтому указал значение "http://localhost:8000".
встроенный веб сервер
Кнопка внизу Next
Debugger - None
Кнопка внизу Next
Path mapping

  • Add
  • Path on server - /test
  • Path in workspace - test
  1. Запуск веб сервера php -S на порту 8000 и корневым каталогом, в данном случае /home/vladimir/workspace

cd ~/workspace
php -S localhost:8000

где ~/workspace - путь к папке проектов php нужно заменить на свой.

Внимание! Если забыть выполнить команду cd ~/workspace (который является в данном случае "Document root"), то при запущенном php -S будет ошибка 404:

404

Объяснение: Папка проекта должна являться подкаталогом папки "Document root". Если проект хранится в подпапке другой папки, а не "workspace" исправьте поле "Document root". Например, в примере ниже - папка проектов называется "eclipse-workspace".

server - document root

результат запуска в терминале должен быть следующий:
"[Mon Apr 17 16:59:14 2023] PHP 8.1.2-1ubuntu2.11 Development Server (http://localhost:8000) started"

  1. Window - Preferences - PHP - Servers
    Меняем следующим образом:

Первая вкладка - указываем Document root такой же как для php -S, а именно
/home/vladimir/workspace (замените на путь к папке проектов)
set1

Третью вкладку "Port mappings": не настраиваем!
Сохраняем настройку и выходим.

  1. На панели Eclipse нажимаем "стрелку вниз" рядом с зеленым значком запуска "Run" - "Run Configurations...".
    Данная настройка предназначена для указания стартового php-файла "по умолчанию" при запуске "Run".

Выбираем настроенный в предыдущем пункте сервер.

В проекте выбираем свой основной файл PHP для запуска, кнопкой "Browse".
select_file

Галочка "Auto generate" должна быть установлена.
auto generate

  • Apply
  • жмём Run (а не Close!)

Если веб-сервер на порту 8000 запущен, веб сервер отработает и страница будет выведена на экран.
Если была запущена на скорую руку созданная страница <?php echo "Hello, world!";

Hello, world!

либо, при запуске файла index.php с шаблоном twig (приведена в конце статьи):

result

В случае, если страница не показалась, смотрим ошибки в окне терминала, в котором запущен php -S.

Возможные ошибки

PHP Warning: Unknown: Failed to open stream: No such file or directory in Unknown on line 0 PHP Fatal error: Failed opening required
Решение: удалить из настроек сервер Path mapping.

[::1]:45720 [500]: GET /test/index.php - Unparenthesized a ? b : c ? d : e is not supported. Use either (a ? b : c) ? d : e or a ? b : (c ? d : e) in /home/vladimir/workspace/test/vendor/twig/twig/lib/Twig/Node.php on line 42

Решение: обновить Composer 1 до версии 2.5.5 и Twig v2.4.8 до версии v2.15.4, которые совместимы с PHP 8.1.2:

cd ~/workspace
sudo composer self-update --2
composer require "twig/twig:^2.0"

В дальнейшем index.php запускаем на просмотрр нажатием зелёной кнопки "Run".

Настройка отладки кода в Eclipse с помощью XDebug

1) Из командной строки установить пакет xdebug

sudo apt-get install php-xdebug

2) Узнать, где находится файл php.ini:

<?php phpinfo();

3) Перейти в папку (которая выведена предыдущем пункте)

cd /etc/php/8.1/cli/conf.d

в папке conf.d должна находиться символьная ссылка 20-xdebug.ini на файл
xdebug1

Если нет - создаем её (путь к папке выводит функция echo php_info():
sudo ln -s /etc/php/8.1/mods-available/xdebug.ini 20-xdebug.ini

Таким образом, для настройки xdebug нужно редактировать файл командой nano /etc/php/8.1/cli/conf.d/20-xdebug.ini, но фактически редактируется файл /etc/php/8.1/mods-available/xdebug.ini.

4) Открываем на редактирование 20-xdebug.ini

sudo nano 20-xdebug.ini

5) Добавляем в файл 20-xdebug.ini следующий текст:

zend_extension=xdebug
xdebug.mode = debug
xdebug.start_with_request=yes

Дополнение от 15.06.2023. Расширенная версия файла 20-xdebug.ini (xdebug.ini):

zend_extension=xdebug
;zend_extension=xdebug.so
;zend_extension=/usr/lib/php/20210902/xdebug.so
xdebug.mode=debug
;xdebug.remote_enable=1
xdebug.idekey="codeliteide"
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.client_port=9000
xdebug.start_with_request = yes
xdebug.discover_client_host=1

Примечание: если после запуска веб сервера php -S localhost:8000 выводится сообщение Cannot load Xdebug - it was already loaded - не обращайте внимания на предупреждение.

Примечание №2: Если при отладке выполнение не остановится, и пройдет мимо точки останова, как в случае "Run", проверьте файл "/etc/php/8.1/mods-available/xdebug.ini" - в нём должна быть строка zend_extension=xdebug или zend_extension=xdebug.so , т.к. без неё отладка работать не будет.

(Дополнение. чтобы отключить отладку xdebug, нужно удалить эти строки (или закомментировать) и вписать в файл /etc/php/8.1/mods-available/xdebug.ini текст: xdebug.mode = none)

6) В среде разработки Eclipse в файл index.php добавляем следующий текст:

<?php echo xdebug_info();

7) В настройках Window - Preferences - PHP - Debug нажимаем на строку Xdebug - кнопка "Configure"
Eclipse Xdebug Configure

8) Исправляем порт с 9000 на 9003.
XDebug Configure port 900

9) Apply - Apply and Close

10) Включаем перспективу "Debug":

Window - Perspective - Debug

(Либо в правой верхней части экрана нажимаем соответствующую кнопку).

11) В меню "Run" проверяем пункт "Debug configurations..." настройки которого на первой вкладке "Server" совпадают с "Run configurations...".
Здесь указан PHP файл для отладки, который будет открываться в браузере после запуска "Debug".

Также, можно настройки отладчика Debugger внести в "Глобальные настройки"

  • Run - Debug configurations - Debugger - Configure - Global settings - Debug port.

На второй закладке "Debugger" должен быть выбран XDebug, указан порт 9003. Который задали выше в ini-файле 20-xdebug.ini.

Если программа "ругается", что порт 9003 занят "Port is already in use. Please select a different port for debugger in corresponding PHP server configuration (localhost:8000)",
нужно завершить php -S и закрыть Eclipse. Затем в терминале перейти в папку cd workspace и запустить php -S localhost:8000 и выполнить Eclipse, в котором повторить отладку Run - Debug (F11).

11) Запускаем отладку в меню "Run - Debug".

Поскольку ранее добавили в пункте 6 в исходный текст функцию echo xdebug_info();
должна отобразиться информация о Xdebug с включенным пунктом Step Debugging.

12) Пробуем установить точку останова и перезапустить приложение нажатием на кнопку "стоп", затем запускаем отладку с помощью пункта меню "Run" - "Debug (F11)". Отладка остановится на точке останова. Нажимаем клавишу F6 ("Step over")**. В веб браузере отобразится результат:
результат echo xdebug_info();

Основные горячие клавиши для отладки (Debugging):
F11 - Debug (запустить отладку)
F5 - Step into (войти в метод или функцию)
F6 - Step over (выполнить метод или функцию без захода в подпрограмму)
F7 - Step return (выйти из метода, функци)
Ctrl+F11 Run (запуск без отладки)
Ctrl+F2 Terminate (прервать)

Добавление от 13.06.2023: Для запуска проекта без отладки - Run - Run (Ctrl+F11).
Чтобы при каждом запуске не происходила остановка на первой строке, в
Window - Preferences - Debug - Break at First Line снимите галочку. См. рисунок ниже

Break at First Line - OFF

Совет: для вывода информации об установленной версии расширения xdebug, выполните с использованием веб-сервера в режиме Run или Debug страницу с PHP кодом: echo xdebug_info();


Проверочный файл index.php для шаблонизатора Twig

<?php
require_once './vendor/autoload.php';

$loader = new Twig_Loader_Filesystem ( './templates' );

$twig = new Twig_Environment ( $loader, array (
'cache' => './cache',
'auto_reload' => 'true',
'debug' => true
) );

$twig->addExtension ( new Twig_Extension_Debug () );

$data = array (
'username1' => 'Петя',
'username2' => 'Вова'
);

$mas = [
'1-морковь',
'2-кинза',
'3-огурцы',
'4-тыква',
'5-хрен'
];

echo $twig->render ( 'index.html', array (
'name' => 'Володя',
'visit' => '01.07.2018',
'data' => $data,
'mas' => $mas
) );

?>

Шаблон

кусок шаблона

Тестовый проект 2020 года для Eclipse 2020-09:

(включая файл php и шаблон twig (для Composer 1.0 и Twig 2.4):
test.zip

Тестовый проект 2023 года для Eclipse 2023-03:

(включая файл php и шаблон twig (для Composer 2.0 и Twig 2.15):
test2023.zip