OSPanel 6 + PhpStorm

6c7b8855c87e94acd586e7e7f054e219d6879d12
Как открыть терминал в PhpStorm с уже активированной средой проекта

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

OSPanel 6 позволяет создавать индивидуальное окружение для каждого проекта. Чтобы терминал PhpStorm при открытии автоматически инициализировал необходимое окружение я нашёл несколько вариантов.

Вариант 0 (то что нужно)

В последней версии OSP 6.2.9 должна работать команда 

osp project auto

Вот так вот всё просто стало.

Вариант 1 (пробный, не годится)

В настройках терминала Shell path прописать следующую команду:

c:\windows\system32\cmd.exe /k "d:\ospanel\bin\osp.bat project example.local"

Обратите внимание, что нужно указать верный путь к файлу d:\ospanel\bin\osp.bat. У вас OSPanel может быть установлена в другое место.

example.local - это название вашего локального домена для данного сайта. К сожалению, эту настройку придется прописывать для каждого отдельного проекта.

Вариант 2 (приемлемый)

Один из пользователей чата OSP предложил следующий вариант

C:\Windows\system32\cmd.exe /k for %f in (%CD%) do @osp project %~nxf

Здесь предполагается, что каталоги вашего проекта имеют название, идентичное локальному домену для него.

Вариант 3 (упоротый)

Еще один вариант https://t.me/ospanel_chat/1/9663

Как оказалось, настройка Shell Path вовсе не проектно-зависимая и отдельно для каждого проекта индивидуальную команду для активации среды задать не получается.

Написал батник project.bat, разместил его в директории OSPanel/bin, содержание следующее:

@echo off

if exists "./.osp/project.ini" (
     for /f "tokens=1,2 delims= " %%a in (./.osp/project.ini) do (
         set str=%%a
         echo %%a | findstr [ > NUL
         if not ERRORLEVEL 1 goto run
     )
) else (
   echo not found
)

goto end

:run
set str=%str:~1,-1%
osp project %str%

:end

В настройке Шторма в Shell path указал следующее:

c:\windows\system32\cmd.exe /k "project.bat"

Хорошо работает только если каталог .osp находится  в рабочей директории проекта и содержит один домен =(

Вариант 4 (оптимальный)

Почему-то я сразу не догадался, но ведь есть проектно-зависимая настройка – Environment Variables.

В ней можно указать любую переменную окружения для данного проекта. Этим можно воспользоваться, чтобы указать там имя домена. А дальше, либо использовать ее прямо в команде Shell path, как указано на скрине. Либо совместить с предыдущим вариантом №3, добавив условие в файл project.bat

@echo off

if not "%OSP_DOMAIN%"=="" (
    osp project %OSP_DOMAIN%
    goto end
)

IF EXIST "./.osp/project.ini" (
     for /f "tokens=1,2 delims= " %%a in (./.osp/project.ini) do (
         set str=%%a
         echo %%a | findstr [ > NUL
         if NOT ERRORLEVEL 1 GOTO run
     )
) ELSE (
   echo not found
)

goto end

:run
set str=%str:~1,-1%
osp project %str%

:end 

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

 

Комментарии (15)

Прохожий

Спасибо!

Прохожий

Добрый день! Как сделать, чтобы терминал открывался в директории public проекта? Опция Start directory не влияет: https://i.imgur.com/J1gfoXI.png

delphinpro

Добрый день! Как сделать, чтобы терминал открывался в директории public проекта? Опция Start directory не влияет: https://i.imgur.com/J1gfoXI.png

Директория, в которой будет открываться терминал задаётся опцией project_dir в файле .osp/project.ini

[mysite.local]
project_dir = {base_dir}/public

Все доступные параметры перечислены здесь: https://github.com/OSPanel/OpenServerPanel/wiki/Документация#секция-имя_домена-1.

Прохожий

Не нашёл куда вам можно написать, поэтому напишу здесь. Пожалуйста, очень прошу, напишите пожалуйста как работать со связкой OSPanel 6, XDebug и PHPStorm, я так и не смог до конца разобраться как заставить это всё нормально работать, буду очень благодарен!

delphinpro

Поддержка оказывается на официальном форуме и в telegram-канале https://ospanel.io/forum/ https://t.me/ospanel_chat Я тоже там присутствую, но конкретно по XDebug не смогу помочь.

Прохожий

Директория, в которой будет открываться терминал задаётся опцией project_dir в файле .osp/project.ini

Благодарю.

Прохожий

Класс спасибо большое, особенно за 4 вариант.

Прохожий

Помойму лучший способ описан в документации, в файл .\config\menu.ini, добавить:

[21]
caption  = Открыть в PhpStorm
category = projects
command  = "%COMSPEC%" /c "osp project {host_decoded} & start "" "<путь_до_phpstorm>\bin\phpstorm64.exe" "{project_dir}""
hide     = on
icon     = code

<путь_до_phpstorm> - заменить. Теперь у каждого домена в меню трея будет кнопка "открыть в phpstorm", с рабочими командами php, osp, composer и тд

Прохожий

Прохожий, лучший, работает отлично

Прохожий

Прохожий, спасибо, все работает!

Прохожий

osp project auto

Когда, куда и откуда вводить?

Просто ввести и можно пользоваться терминалом PhpStorm?

Прохожий

терминал PhpStorm при использовании композера требует расширение openssl, так оно же включено)))

Прохожий

после команды

osp project auto

начинает работать композер из терминала шторма и из штормовского меню самого файла composer.json

всё отрабатывает, но при каждой команде композера вылетает мессага

Warning: PHP Startup: Unable to load dynamic library 'imagick' (tried: C:/OSPanel/modules/PHP-8.4/PHP/ext\imagick (Не найден указанный модуль), C:/OSPanel/modules/PHP-8.4/PHP/ext\php_imagick.dll (Не найден указанный модуль)) in Unknown on line 0

imagick в php.ini включен-раскомментирован, библиотека есть

по команде из терминала шторма php -m такое же сообщение, в спике модулей есть всё кроме imagick

Прохожий

osp project auto

работает только для встроенного терминала PhpStorm, но для этого нужно дефолтный терминал паувэршел сменить на командную строку, либо во вкладке терминала в выпадающем меню каждый раз выбирать командную строку

в composer.json верхнее меню работы с пакетником не работает корректно: некорректно работает вкладка Run с интерпретатором (не видит некоторые модули php) и композером проекта, ДАЖЕ если в терминале уже запущена команда osp project auto И в настройках терминала установлена галочка - выполнять команды (Run) IDE, скорее всего косяк разрабов шторма и вкладка Run не учитывает текущее состояние терминала IDE

delphinpro

нужно дефолтный терминал паувэршел сменить на командную строку

OSP никогда не работал в PowerShell, все его консольные команды написаны на Batch

Вы можете оставить комментарий:

Поддерживается разметка markdown

Комментарий будет опубликован после модерации