Phpstorm не отправляет файлы после сохранения ftp
Существует много способов передачи копий файлов проекта на сервер развёртывания. Это руководство описывает, как автоматически загружать изменения на сервер развёртывания с помощью PhpStorm, например, перед запуском сеанса отладки или при фиксации изменений в VCS. Оно опирается на руководство Деплой PHP-приложений с помощью PhpStorm.
2. Синхронизация изменений
Наряду с обычным копированием файлов с и на сервер развёртывания, PhpStorm также может синхронизировать изменения. Чтобы сделать это, используй опцию [Deployment → Sync with Deployed . ] контекстного меню любого файла, папки или всего проекта на панели Project . Будет открыто окно Diff beetwen . and . (смотри скриншот ниже). Это так называемый diff — разница между файлами проекта PhpStorm и удалённым сервером.
Если необходимо синхронизировать только конкретные изменения в файл проекта с сервера развёртывания, то при просмотре различий можно внести исправления, которые будут скопированы с сервера. Выше на скриншоте красным контуром выделена иконка, с помощью которой вносятся исправления. Только удалённые изменения могут быть частично применены к локальным проектам, но не наоборот.
По умолчанию разница будет основываться на содержимом файлов. Также есть возможность выставить сравнение файлов в зависимости от размера или метки времени. Это можно сделать с помощью выпадающего списка на панели инструментов, указанного на скриншоте ниже.
На основе сравнения версий можно выбрать то, что будет происходить с выбранными файлами. Ты можешь выбрать либо загрузку локальных изменений из проекта на сервер развёртывания, либо выгрузку удалённых изменений с сервера в проект с помощью контекстного меню.
После того как необходимые исправления для различий были сделаны, ты можешь использовать иконки на панели инструментов: Synchronize Selected (для cинхронизации выбранных файлов) или Synchronize All (для синхронизации всех файлов). Обсуждаемые иконки отмечены красным контуром на скриншоте ниже.
Upload locally changed files
Switch to the Local Changes view to view the locally changed files.
Right-click a file, then select Deployment | Upload to from the context menu, and choose the target deployment server or server group from the list. If the default server or server group group is appointed, you can also select Upload to .
Как синхронизировать файлы по фтп с удалённым сервером
Теперь мы уже знаем, как можно добавлять и редактировать файлы в PHPStorm по FTP. Осталось только настроить проект таким образом, чтобы была возможность загружать файлы на сервер без подтверждения, без постоянных кликов на кнопку загрузки файлов. То есть, чтобы мы могли отредактировать файл локально, и он, в лайв режиме загрузился на сервер без дополнительных подтверждений с нашей стороны.
Для этого опять зайдём на страницу настроек File > Settings , настройки деплоя Build, Execution, Deployment > Deployment > Options
где 1 - режим загрузки файлов при их изменении:
- Always - синхронизировать сразу же при изменении
- On explicit save action - загрузка на сервере при нажатии Ctrl + S
- Never - не синхронизировать
2 - режим поиска и разрешения конфликтов версий файлов:
- No - загружать локальный файл на сервер без дополнительных проверок
- Compare timestamp & size - сравнивать дату изменения локального файла с серверным, или его размер
- Compare content - сравнивать содержимое файла с его предыдущей версией
То есть, когда PHPStorm обнаружит, что за то время, пока вы редактировали свой файл локально, его кто-то изменил на сервере. И, если настроено разрешение конфликтов версий файлов, то он уведомит вас о том, файл отредактирован кем-то, чтобы вы не затёрли чужие правки. Удобно, когда над проектом работает несколько человек.
Применив все настройки и отредактировав локальный файл, можем убедиться, что изменения на сервер были отправлены незамедлительно. И теперь вы знаете, как насроить лайв синхронизацию файлов с сервером в PHPStorm.
Upload checked-in files immediately after commit
Start checking in your changes.
In the After Commit area, choose the target server or server group from the Upload files to list. Choose one of the existing configurations or create a new one: click and configure access to the relevant server or set up a server group in the Deployment dialog that opens.
To have your selection applied automatically in the future, select the Always use selected server or group of servers checkbox.
Для чего это нужно
Очень часто так бывает, что вы разрабатываете проект локально, и после приобретения проектом лицеприятного вида появляется необходимость в публикации этого сайта на хостинге, или личном сервере. Допустимый вариант - использовать фтп-менеджер, по типу FileZilla, WinSCP, или им подобные. И с их помощью загружать файлы на сервер, как только вы закончите работу. Однако, во-первых, иногда очень напрягает постоянные переключение между вкладками, особенно, когда правки происходят в режиме лайф. И, во-вторых, PHPStorm имеет встроенный функционал по работе с удалёнными серверами, и, во-многом, мощнее большинства файловых менеджеров.
Благодаря PHPStorm-у теперь можно настроить подключения к удалённому серверу, настроить автоматическую загрузку файлов и их синхронизацию, можно редактировать удалённый файлы по FTP прямо из любимой IDE. В общем, что только не делают разработчики IDE, только бы мы писали качественный код. Потому, преимущества использования встроенных инструментов, по сравнению с FileZilla и компанией - есть.
Configure automatic upload of changed files to the default server or server group
PhpStorm considers a local file changed as soon as it is saved either automatically or manually ( File | Save All or Ctrl+S ), see Write and edit source code. Changed files can be automatically uploaded only to the default deployment server.
Open the Options dialog by doing one of the following:
From the main menu, choose Tools | Deployment | Options .
In the Settings/Preferences dialog ( Ctrl+Alt+S ), go to Build, Execution, Deployment | Deployment | Options .
From the Upload changed files automatically to the default server list, choose when you want PhpStorm to upload changed files:
To upload any manually or automatically saved file, choose Always .
To upload only manually saved files, choose On explicit save action .
To suppress automatic upload, choose Never .
If you enabled automatic upload, optionally configure the scope it should apply to:
Select Skip external changes to exclude local changes that were made using a third-party tool (a VCS, a script, and so on) from automatic upload.
Select Delete remote files when local are deleted to have PhpStorm automatically delete remote files during automatic uploads in case the local ones are deleted.
Note that this option serves as an extra safety measure and may result in unwanted files remaining on the remote server. As an example, consider a local file Foo.php , which is renamed to Bar.php . Since renaming a file is technically indistinguishable from deleting the file and creating a new one, the following will happen after automatic upload:
If the option is enabled, the remote server will only contain Bar.php .
If the option is disabled, the remote server will contain both Foo.php and Bar.php after automatic upload. You will probably need to delete Foo.php manually afterwards.
Enabling the Upload changed files automatically to the default server option also enables Upload to default server in Settings/Preferences | Tools | Actions on Save .
Upload a file or folder manually
In the Project tool window, right-click a file or folder, then select Deployment | Upload to from the context menu, and choose the target deployment server or server group from the list.
If the default server or server group is appointed, you can also select Upload to .
3 Answers 3
PhpStorm is built around "local project files are the main ones -- deployed are secondary" idea. It's natural to have "automatically upload to remote host" (sync local with remote) functionality to follow such an idea.
At the same time the IDE does not have anything to "automatically sync remote with local" (the reverse: to automatically copy remote stuff back to local). Simply because it contradicts such an idea: local files are the main ones.
The "Synchronize" button that you are referring to does not do what you are expecting it to do. It syncs what the IDE knows about project files on a local file system. In other words: it checks if there were any changes to local files done outside of the IDE. It does not do anything with remote files.
NOTE: In modern 202x.x versions it has been renamed to "Reload All from Disk" to avoid such a confusion).
To manually sync with remote files (any direction) you have these main options:
Use Remote Host side panel (can be accessed via Tools | Deployment | Browse Remote Host if it’s closed/hidden) and download any files or folders manually (drag and drop can also be used, just make sure that you are copying files because by default IDE tries to "move" (copy+delete) instead of just "copy"). It has a "Refresh" button to refresh the remote location.
Use two-way synchronisation (with preview) accessible via right click on desired folder(s)/files and choosing Deployment | Synch with Deployed. where you can sync those files/folders both ways (by default newer stuff will override older regardless of the direction).
The IDE can automatically sync one way (from local to remote): just ensure that automatic deployment is enabled and you have one server (or a group) marked as Default for this project.
Settings (Preferences on macOS) | Build, Execution, Deployment | Deployment | Options | Upload changed files automatically to the default server is the option. Check other options there to better suit your needs.
Мой проект на phpStorm использует удаленный доступ к серверу по FTP. Когда я сохраняю измененный файл, файл обычно загружается в серв, но когда я создаю папку на серве, я не вижу его в phpStorm.
1) Какой "Синхронизировать"? Не могли бы вы показать снимок экрана с этой кнопкой (выделите ее красным цветом или чем-то еще). 2) Где вы ожидаете увидеть вашу удаленную папку - как я понимаю в Project View?
PhpStorm построен на идее «локальные файлы проекта являются основными, а развернутые - второстепенными». Естественно иметь функцию «автоматически загружать на удаленный хост» (синхронизировать локальную с удаленной), чтобы следовать этой идее.
В то же время в IDE нет « автоматической синхронизации удаленного с локальным» (т.е. автоматического копирования удаленного содержимого обратно на локальное ) - это противоречит такой идее: локальные файлы являются основными.
Кнопка «Синхронизировать», о которой вы говорите, не выполняет то, что вы от нее ожидаете. Он синхронизирует то, что IDE знает о проекте, с реальной локальной файловой системой. Другими словами, он проверяет, были ли какие-либо изменения в локальных файлах вне IDE. Он ничего не делает с удаленными файлами.
Для синхронизации с удаленными файлами у вас есть 2 основных варианта:
Используйте Remote Host боковую панель (если ее нет / закрыта, к ней можно получить доступ через Tools | Deployment | Browse Remote Host ) и загрузите любые файлы или папки вручную (можно использовать перетаскивание, но убедитесь, что вы копируете файлы, потому что по умолчанию IDE пытается «переместить» (копировать + удалить) вместо просто «копировать»). Он имеет кнопку «Обновить», чтобы перечитать удаленную сторону.
Используйте двустороннюю синхронизацию, доступную через щелчок правой кнопкой мыши по нужной папке (ам) / файлам и выбор места, Deployment | Synch with Deployed. где вы можете синхронизировать файлы / папки в обоих направлениях (по умолчанию более новые материалы будут иметь приоритет перед старыми независимо от направления).
Резюме
Теперь вы знаете, как в PHPStorm работать по FTP, как работает загрузка файлов одновременно на несколько серверов, как всё это настраивать и успешно применять в своей работе. В этой статье я, для демонстрации использовал демо-сервер, который заказывал на DigitalOcean. И если вам нужен дешевый и качественный сервер (топ за свои деньги), то приглашаю вас зарегистрироваться по инструкции из этой статьи, и получить дополнительные 50$ на использование их услуг.
PhpStorm provides the following main ways to upload project files and folders to deployment servers:
Manually , at any time through a menu command.
Automatically , every time a file is updated, or before starting a debugging session, or during a commit to your version control system.
For downloading files and folders, PhpStorm supports only the manual mode.
PhpStorm shows the logs in the File Transfer tool window ( View | Tool Windows | File Transfer ).
4. Автоматическая загрузка
перед запуском сеанса отладки *
При работе над PHP-приложением ты можешь загружать свой исходный код автоматически на сервер развёртывания каждый раз, когда запускаешь приложение или инициируешь сеанс отладки из IDE.
Это может быть очень полезно при работе с веб-сервером разработки: когда ты запустишь отладку приложения удалённо, она всегда будет работать с последней версией исходного кода твоего проекта.
Используя меню [Run → Edit Configuration. ] , можно открыть окно конфигурации отладки и в секции Before launch (перед запуском) добавить действие Upload files to Remote Host (загрузка файлов на удалённый хост).
Далее ты можешь указать, какие папки должны быть загружены на сервер развёртывания. Это может быть и полный проект, и лишь специфичные подпапки, необходимые для отладки.
Настройка FTP-подключения в PHPStorm
Для демонстрации процесса настройки FTP в PHPStorm я создам новый проект, а так же, создам новый дроплет на DigitalOcean, на который буду загружать файлы проекта.
Прежде всего, нужно настроить FTP соединение с удалённым сервером. Для этого нужно перейти в меню настроек File > Settings , где открыть вкладку Build, Execution, Deployment > Deployment , и нажать на кнопку добавления нового подключения:
Где во всплывающем меню будет предложено выбрать тип подключения, который мы будем использовать: FTP , FTPS , SFTP :
Какую опцию выбирать зависит от того, куда вы подключаетесь. Грубо говоря, если у вас собственный сервер, и к примеру, вы хотите подключиться от имени root-а, или другого пользователя на сервере, то нужно выбрать SFTP .
Если вы подключаетесь к shared-хостингу, то они обычно предоставляют доступ только по FTP .
И указав имя, получим такое окно с настройками, на котором остановимся подробнее:
где 1 - это опция, которая указывает на то, будет ли доступен этот сервер в других ваших PHPStorm-проектах. То есть, вы можете настроить это подключение один раз, и выставив эту галочку, работать в любом своём проекте, не настраивая его повторно в других проектах
2 - тип подключения, который указывали шагом назад (который можем изменить в любой момент)
3 - хост, к которому подключаемся
4 - порт сервера (для SFTP обычно 22, но на сервере можно настроить какой угодно)
5 - имя пользователя
6 - пароль (и галочка сохранить пароль, чтобы не вводить его повторно)
После того, как указали все параметры, нужно протестировать это подключение на корректность введённых данных, нажав на кнопку Test Connection (соглашаясь со всеми всплывающими окнами).
Теперь осталось только настроить пути к проекту, папку выгрузки на сервер. Здесь нужно указать, в какой директории на сервере находятся файлы вашего проекта. К примеру, на VDS, файлы, обычно расположены по пути /var/www/html , если это хостинг, то username/public_html , public_html , или что-то типа того. Потому укажем путь, нажав на кнопку:
Теперь, последний шаг для удачного деплоя - укажем путь, куда будут загружаться файлы. Для этого нужно перейти на вкладку Mappings и выбрать путь Deployment path (обычно, при указанном пути к проекту на предыдущей вкладке, Deployment path задаётся как / ).
Если вы хотите, чтобы на удалённый сервер заливался проект, без определённых папок/файлов, то можете указать исключения на вкладке Excluded Paths , какие папки/файлы будут игнорироваться при деплое.
Готово! Нажимаем OK , и сервер добавлен.
Download a file or folder
In the Remote Host tool window, select the required file or folder and choose Download from here from the context menu of the selection.
My project on phpStorm use a remote access to the server by FTP. When I save a modified file, the file is uploaded normally to the serv, but when I create a folder on the serv, i don't see it in phpStorm.
1) Which "Synchronize"? Can you please show a screenshot with that button (highlight it with red color or something). 2) Where do you expect to see your remote folder appeared -- as I understand in Project View?
Загрузка файлов не несколько серверов одновременно (группа серверов)
Иногда возникает необходимость в загрузке файлы одновременно на несколько удалённых серверов. И в этом PHPStorm нам может здорово помочь. Для того, чтобы из PHPStorm-а деплоить файлы на несколько серверов, нам нужно создать группу серверов для деплоя.
Для того, чтобы создать такую группу серверов, откроем панель File > Settings , и перейдём на вкладку Build, Execution, Deployment > Deployment , где нажмём на кнопку добавления нового сервера (как было в предыдущих шагах), только в этот раз выбираем опцию Server group
Во всплывающем окне укажем имя для этой группы серверов, после чего, можем начать добавление сколько угодно серверов в эту группу:
Я, для этих целей создал 2 новых сервера, чтобы продемонстрировать работу с несколькими серверами из PHPStorm. Я добавил их в текущую группу серверов, указав нужные данные для подключения, пути к проекту, и путь для деплоя (как в предыдущей секции статьи).
В итоге, группа из двух сервером выглядит так:
Теперь, когда всё настроено, можем выделить нужные файлы проекта, которые необходимо залить, нажать ПКМ, и в контекстном меню Deployment кликнуть Upload to . server group
Нажав на кнопку, запустится процесс деплоя на каждый из этих серверов. Если же, вам понадобится загрузить только на один сервер из этой группы, то в том же меню Deployment , можете выбрать Upload to. , во всплывающем окне, выбрав нужный сервер
На момент создания группы серверов у вам уже могут иметься добавленные сервера. Вы можете переместить их в группу, используя drag-n-drop.
Если в PHPStorm не работает drag-n-drop, то попробуйте, используя зажатую кнопку Alt .
Так же важно понимать, что относительно группы серверов так же работает автоматическая синхронизация файлов с вашим проектом (если она настроена).
Подключаемся к настроенному серверу
Подключение мы настроили. Но пока непонятно, как к нему подключиться. Для того, чтобы появилась удобная панель работы с FTP-серверами, откроем в меню Tools > Deployment > Browse Remote Host , в результате чего, появится новая панель Remote Host , которую можете открыть кликнув по ней
И всё, теперь мы полноценно настроили подключение по FTP, и можем из PHPStorm загружать, или редактировать файлов на удалённом сервере. Удобство в том, что можно перенести файлы на сервер либо выделив все нужные локальные файлы, скопировав Ctrl + C , перевести фокус на удалённый сервер, и Ctrl + V .
Или же, выделив нужные файлы, нажмите правую кнопку мыши, Deployment > Upload to .
Теперь в правом меню Remote Host , в списке файлов сервера появятся ваши файлы, которые вы можете открывать, и редактировать по фтп. И к примеру, если вы открыли файл, отредактировали его, то редактор сам подскажет вам, что в файле были произведены изменения, которые стоило бы залить на сервер. И для того, чтобы загрузить изменения на FTP сервер, нужно нажать на кнопку:
Upload application sources automatically before the PHP remote debugging session
Create a PHP Remote Debug run/debug configuration.
In the Before launch area, click and choose Upload Files to Remote Host from the list.
If the area is folded, click to expand it.
In the Upload to Remote Host dialog that opens:
From the Server list, choose the target deployment server or server group.
In the Local roots to upload area, create a list of root folders to upload. All the folders and files under the specified roots will be uploaded recursively.
1. Необходимые условия
Сервер развёртывания уже настроен, как указано в руководстве Деплой PHP-приложений с помощью PhpStorm.
Все действия, описанные здесь, были воспроизведены с корректными ожидаемыми результатами при следующем технологическом окружении:
Upload files after synchronizing with a VCS repository
Synchronize the contents of your local files with the VCS repository by pressing Ctrl+T or selecting VCS | | Update from the main menu.
Switch to the Update Info tab of the Version Control tool window Alt+9 .
Right-click a file, then select Deployment | Upload to from the context menu, and choose the target deployment server or server group from the list. If the default server or server group is appointed, you can also select Upload to .
5. Автоматическая загрузка после коммита в VCS *
PhpStorm может автоматически загружать файлы после коммита в VCS из окна Commit Changes (фиксация изменений). Для этого необходимо указать сервер в секции After Commit (после коммита), а при установке параметра Always use selected server (всегда использовать выбранный сервер) загрузка файлов на сервер развёртывания будет выполняться при каждой фиксации изменений.
3. Автоматическая загрузка *
Для настройки в проекте автоматической загрузки сервер развёртывания должен быть установлен в качестве сервера по умолчанию. Это можно сделать через меню [Tools → Deployment → Configuration] . Затем в левой части открывшегося окна выбери сервер и с помощью кнопки Use as Default на панели инструментов установи его по умолчанию.
Когда на сервере тебе нужны те же файлы, что и в проекте PhpStorm, полезно использовать автоматическую загрузку. Это значит, что всякий раз, когда изменение сохраняется в IDE, оно будет перенесено на сервер развёртывания. Конфигурирование поведения автозагрузки можно выполнить с помощью меню [Tools → Deployment → Options] .
Настройка опции (отмечена красным контуром на скриншоте выше) Upload changed files automatically to the default server (автоматическая загрузка изменённых файлов на сервер по умолчанию) происходит через выпадающий список со следующими значениями:
- Newer (никогда) — автоматическая загрузка не используется.
- Always (всегда) — автозагрузка файлов будет происходить при любом сохранении или автосохранении. Этот вариант не рекомендуется использовать для развёртывания на боевой сервер: при разработке может быть загружен неполный код, высока вероятность поломки приложения на сервере.
- On explict save action (явное действие сохранения) — этот вариант будет вызывать автоматическую загрузку, только когда сохранение файла было вызвано вручную: при выборе через меню [File → Save As..] или с помощью горячих клавиш Ctrl + S ( Cmd + S на Mac OS X).
Всякий раз, когда происходит автоматическая загрузка, служебное окно File Transfer сообщает тебе об этом:
6. Уведомления об удалённых изменениях *
При работе с локальным проектом и удалённым сервером есть возможность получать уведомления в случае удалённых изменений. Ты можешь это легко настроить через меню [Tools → Deployment → Options] .
Существуют две опции, которые должны быть включены, чтобы ты смог получать уведомления об удалённых изменениях:
- Warn when uploading over newer file (предупреждать о загрузке более нового файла) — эта опция позволяет выбрать тип поведения для предупреждений о перезаписи файлов на сервере развёртывания. По умолчанию эта опция отключена, но ты можешь выбрать с помощью списка вариант сравнения файлов: на основе метки времени и размера или фактического содержания файлов.
- Notify about remote changes (сообщать об удалённых изменениях) — при включении этой опции ты будешь получать уведомления о всех удалённых изменениях файлов, даже которых нет в локальном проекте.
Если ты откроешь файл, который был изменён на сервере развёртывания, в IDE, то получишь уведомление об этом. Ты можешь объединить изменения в локальный файл или просто выбрать перезапись локальных изменений, загрузив удалённый файл.
Если тебе нужна помощь по устранению неполадок при развёртывании приложений, ознакомься с руководством Устранение неполадок развёртывания в PhpStorm.
Пункт является опциональным при изучении руководства: Синхронизация изменений и автоматическая загрузка на сервер развёртывания в PhpStorm.
В этой статье я расскажу о том, как в PHPStorm настраивать FPT/SFTP-подключения для работы с файлами на удалённом сервере. После прочтения этой статьи вы будете знать, как в PHPStorm работает загрузка файлов на сервер. Как добавить несколько FTP-подключений и одновременно загружать файлы на все настроенные сервера.
Читайте также: