Phpstorm не видит файлы проекта

Обновлено: 04.07.2024

Давайте я тоже поддержу межблоговые дискуссии и отвечу Илье. А ответить есть что.

Уже лет 5 я использую PhpStorm как один из основных инструментов. Как такое могло произойти, если среды разработки — уродские и тормознутые? Давайте разбираться.

Переход на PhpStorm

Раньше я программировал в Notepad++. Вершина его функций — поиск и замена по всем файлам в папке. Казалось, этого вполне достаточно. Мне тоже нравилась скорость работы редактора, и я тоже относился к IDE снисходительно. «Я и так знаю названия функций, нахрена мне тормознутая подсветка синтаксических ошибок в коде?»

Я не помню, что заставило меня скачать PhpStorm. Мне могли понадобиться возможности, которых не было в плагинах к Notepad++. Или я заинтересовался, что же находят в нем люди. Помню только, что он подсвечивал желтым слишком много подозрительных мест в моем коде.

Тем не менее, PhpStorm у меня прижился. Как автор опенсорсного продукта — движка S2 — я получил бесплатную лицензию. С тех пор PhpStorm стал одним из основных моих инструментов.

Миф №1: PhpStorm тормозит

PhpStorm как IDE отличается от текстовых редакторов:

  • индексирует файлы проекта, чтобы потом мгновенно искать по ним, не перебирая каждый раз содержимое;
  • распознает контекст: понимает, где названия функций, где локальные переменные, где пути к файлам и т. д.

PhpStorm как редактор не хуже Notepad++. С той же скоростью появляются буквы и перемещается курсор. Поиск работает мгновенно за счет индексации. Анализ кода работает в фоне и может отставать от курсора. Но в этом большой проблемы нет, потому что сначала программист пишет код, а потом смотрит на подсказки среды разработки.

Миф №2: переименование файла занимает в PhpStorm несколько секунд с прогресс-баром

Зависит от того, что нужно программисту. PhpStorm способен искать вхождения старого названия файла по всему проекту и по контексту определять, нужно ли это название изменить. Альтернатива в обычных редакторах — поиск и замена по всем файлам — занимает несколько минут рутинной работы. Экономия времени на два порядка.

Поиск старого названия файла можно отключить прямо в окне переименования. Тогда файл переименовывается мгновенно.


Миф №3: PhpStorm «устанавливать и настраивать год»

Установка проходит не сложнее установки любых других программ. Первоначальной настройки PhpStorm не требует. Может открыть любую папку как проект без предварительных вопросов.

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

  • путь к git.exe для работы с гитом;
  • доступ к БД, чтобы делать запросы из среды разработки;
  • доступ на сервер по SSH/FTP для загрузки файлов проекта.

Пошаговая отладка через Xdebug настраивается сложнее самой природы . Но если не хотите пользоваться пошаговой отладкой с просмотром значений переменных по всему стеку вызовов, отлаживайте , никто не запрещает :)

Миф №4: PhpStorm «выглядит как говно»

Вкусовщина, конечно. Нормально он выглядит. Внешний вид работать не мешает. Чтобы не приводить зря громадный скриншот, покажу заодно «git blame»:


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

Настройка синхронизации файлов сервера с локальными через PHPStorm

Автоматическая загрузка измененных файлов на сервер - очень удобная опция PHPStorm. О том как ее настроить и пойдет речь в данной статье.
Если вы еще не настроили себе виртуальную машину и не создали Drupal проект, то можете ознакомиться с тем как это сделать

Настройки, которые будут приведены ниже предполагают что у Вас уже настроен сервер, на нем находятся файлы проекта и установлен PHPStorm.

Содержание

Создание нового соединения с удаленным сервером

Настройки синхронизации файлов сервера с локальными

phpstorm_deployment_options.jpg

Теперь настроим опции в каких случаях необходимо синхронизировать файлы с сервером. Для этого необходимо перейти на вкладку Tools → Deployment → Options через главное меню и в появившемся окне выставить необходимые параметры

Параметров довольно много, но наибольший интерес представляют следующие опции:

  • Upload changed files automatically to the default server - автоматическая загрузка измененных файлов на сервер с возможными вариантами (загружать всегда, по горячей клавише Ctrl + S, либо не загружать вовсе).
  • Upload external changes означает, что будут закачиваться файлы (папки) не только те, над которыми вы непосредственно ведете работу, но и те, которые, например, были добавлены раньше (и в данный момент на сервере отсутствуют).
  • Warn when uploading over newer file - предупреждать при загрузке более нового файла. В зависимости от выбранного параметра из выпадающего списка, PHPStorm будет выполнять (предлагать) варианты разрешения конфликта. Возможные параметры:
    1. No - выберите эту опцию, если необходимо, чтобы локальные изменения текущего файла всегда перезаписывали файл на удаленном сервере, вне зависимости от того был он до этого изменен или нет.
    2. Compare timestamp and size - в этом случае PHPStorm будет выполнять проверку размера локального и удаленного файлов, а также время текущей модификации удаленного файла со временем последней синхронизацией на сервере. Если есть изменения, то появится окно с вариантами: смержить результат, проигнорировать либо переписать.
    3. Compare content - сравнение содержимого локального и удаленного файлов на наличие изменений. Если таковые имеются, как и во втором варианте, будет предложены пути разрешения конфликта.
  • Notify about remote changes означает, что редактор будет показывать напоминание о том, что имеются различия в файлах. Данная опция доступна если предыдущая настройка была выставлена в Compare timestamp and size, либо в Compare content.

Можно также синхронизироваться вручную, вызвав контекстное меню по нужному файлу (папке) и выбрав пункт Deployment → Sync with Deployed to . . Опции Upload to . и Download from. отвечают за закачку на сервер и скачку с удаленного сервера соответственно.

Хочу рассказать как быстро и эффективно начать работать в прекрасной интегрированной среде разработки (IDE) — PhpStorm. Полный цикл создания проекта и его базовой настройки — далее в этой статье.


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

Создание проекта


При первом запуске программы мы увидим такое окно:


PhpStorm работает только с локальной копией проекта, подключиться к серверу и редактировать файл на прямую тут не получится.

Делаем новый проект для такого сценария:
Нажимаем Create New Project from Existing Files:


Выбираем пункт Web server is on remote host, files are accessible via FTP/SFTP/FTPS:


Даем имя новому проекту и обязательно выбираем радио-кнопку Custom, для того чтоб задать первоначальные настройки проекту. Жмем Next


Появится такой экран:


На этом экране нам нужно указать 3 важные настройки: Upload changed files automaticaly to the default server ставим On explict save action. Эта настройка, если ее не выставить — довольно опасная штука, за которой все время нужно следить, иначе можно одним прекрасным днем угробить проект на продакшене (удалил папочку в локальной копии и наша IDE автоматически это все синхронизировала с сервером)

Очень важно.
Следующая настройка — Wharn when uploading over newer file ставим Compare timestamp & size, а так же выбираем галочку внизу Notify about remote changes. Будет подсказывать предупреждение при попытке перезаписать файл, который поменял например ваш коллега. В таком случае нужно мержить вашу локальную копию с копией на сервере.

Нажимаем Next, переходим к настройке доступа к серверу, с которым будем работать

Настройка доступа к серверу



Выбираем Add New Remote Server и нажимаем Next:


Видим список каталогов сервера. Тут нам нужно указать корень проекта (Project Root). Выбираем нужный нам каталог и обозначаем его корнем с помощью кнопки на верхней панели.


Папки приобретут зеленую подсветку. Это значит, что все они буду скачаны в локальную копию, а этого нам совсем не нужно.


Как видно, у нас активировались дополнительные кнопки на панели сверху: Excluded from download, Resource root, Exluded from Indexing.


  1. Исключает каталог и все его подкаталоги и файлы из загрузки.
  2. Помечает каталог как корень ресурса для подсказок, например, в css файлах, когда прописываешь пути к картинкам.
  3. Исключает файлы выбранного каталога и все файлы подкаталогов из индексации после загрузки.


Важно! Чтоб сэкономить время и сделать все по-нормальному мы на данном этапе не будем скачивать файлы вообще, а сделаем это потом в фоновом режиме, когда проект создастся (так как на данном этапе мы ничего не сможем сделать пока файлы не скачаются).

Тем более, если мы все-таки захотим забрать себе какой-то каталог, то нам нужно обязательно выделить корень проекта, а это значит, что все файлы в корне (типа index.php, .htaccess и тд.) будут тоже скачаны. А теперь пример: добрый заказчик держит архив с последним бекапом в корне сайта. Нам придется скачать и его, а это нонсенс.
Короче выделяем все папки и жмем Excluded from download и нажимаем Next и Finish на следующем экране.

Красота, проект создан! Но у нас по-прежнему нет файлов. Теперь нам доступна вкладка Remote Host справа на панельке:


У кого нет, включаем ее в главном меню Tools -> Deployment -> Brows Remote Host:


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

Нажимаем кнопку настроек в верхней панели (1). Далее переходим в Deployment (2), выбираем только что созданный сервер (3), переходим на вкладку Excluded Paths. И удаляем все записи с иконкой коричневой папки, это локальные пути (удалять кнопочкой Remove path внизу). Применяем настройки:


Теперь наша IDE не будет упрямствовать и всегда будет скачивать файлы с сервера, когда мы ее об этом попросим.

Закачка нужный файлов и каталогов


Теперь нам нестрашны возможные бекапы клиентских сайтов в корне сервера, так как мы теперь видим во вкладке Remote Host не только каталоги, но и файлы, которые мы можем исключить из загрузки.

Давайте скачаем какой-то каталог с файлами. Открываем вышеупомянутую вкладку. Выделяем нужный каталог и кликаем правой кнопкой мыши по нему. В меню будет пункт Remove Path from Excluded, который нам и нужен.


Но вот какие дела! Теперь то и родитель его (в данном случае корневой каталог, а значит все-все файлы и папки) тоже исключился и добавился в закачку! Что нам перерь нужно сделать: выделить все каталоги и файлы (кроме корневой папки) и с помощью Ctrl+клик снять выделение с тех каталогов и файлов, которые нам нужно(!) скачать:


Теперь кликаем по какой-нибудь выделенной папке правой кнопкой мыши и исключаем их из загрузки.

Далее выбираем нужную для скачки папку и нажимаем Download from here:


Все, каталог загрузится и проиндексируется. Он теперь доступен в дереве каталогов проекта слева. А так же все файлы в нем. Загрузка изменений файла обратно на сервер произойдет при сохранении его в программе (как и было указано в настройках в самом начале).

phpstorm-git

Если вы еще не работаете с Git в PhpStorm, но хотите начать, то вот статья, которая может быть полезной: Работа с Git в PhpStorm (JetBrains). Если уже начали, то вы знаете, что по умолчанию PhpStorm показывает только изменённые или добавленные файлы, не подсвечивая при этом, родительскую папку. Вот несколько способов улучшить процесс.

Просмотр измененных файлов в зоне Version Control

PhpStorm показывает дерево измененных/добавленных файлов в окне Version Control. Там же можно увидеть изменения внутри конкретного файла. Окно можно найти на нижней панели, предварительно включив: View->Tool buttons. Кнопка будет отображаться при условии, что вы используете какую-либо систему контроля версий.

В этом окне можно выполнять другие действия, относящиеся к Git:

  • создавать change-листы (Что такое changelist? англ. );
  • разносить файлы по change-листам drag&drop'ом;
  • видеть файлы, которые не были добавлены в гит или удалены;
  • делать commit; изменений;
  • создавать патчи из измененных файлов;
  • и другое.

Подсветка дерева

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

Следующий способ - подсветка в дереве: ползём в Setting->Version control. Находим параметр "Show directories with changed descendants" и активируем его.

Иногда после активации этого параметра и сохранения настроек ничего не происходит. По ощущениям это выглядит как будто не сработал триггер "Эй, а ну-ка перезагрузи дерево". Для исправления нужно перезагрузить программу.

phpstrom-menu-file

phpstrom-version-control-settings

Разделение по скопам

Третий способ чуть хитрее. Он заключается в использовании, так называемых, скопов (Scopes) или областей. При использовании системы контроля версий, PhpStorm любезно создает для нас скоп "Changed files". Его можно найти в селекте над деревом файлов.

phpstorm-scopes

phpstorm-scopes-settings

Также вы можете создавать свои скопы.

Постскриптум

Для повышения навыка работы с PhpStorm посмотрите как делать Rebase в PhpStorm.

Читайте также: