Create a remote server configuration
In the remote server configuration, a server runs on another computer (a remote host). To access files on the server, use FTP/SFTP/FTPS/WebDAV protocols.
To configure access to the server in this setup, you need to specify the following:
Connection settings: server host, port, and user credentials.
The server configuration root folder and the URL address to access it.
Correspondence between the project root folder, the folder on the server to copy the data from the project root folder to, and the URL address to access the copied data on the server. This correspondence is called mapping.
Specify the name, type, and visibility of a server configuration
Press Ctrl+Alt+S to open the IDE settings and select
.Alternatively, from the main menu, select
.In the left-hand pane that lists all the existing server configurations, click and select the server configuration type depending on the protocol you are going to use to exchange the data with the server.
FTP: choose this option to have PhpStorm access the server via the FTP file transfer protocol.
SFTP: choose this option to have PhpStorm access the server via the SFTP file transfer protocol.
FTPS: choose this option to have PhpStorm access the server via the FTP file transfer protocol over SSL (the FTPS extension).
WebDAV: choose this option to have PhpStorm access the server via the WebDAV file transfer protocol (the WebDAV extension).
In the Create New Server dialog that opens, type the name of the connection to the server and click OK. The Create New Server dialog closes and you return to the Connection tab of the Deployment node.
Click on the toolbar to have PhpStorm silently apply the current configuration in the following cases:
Manual upload and download of files without choosing the target host.
Comparing local files and folders with their remote versions.
Use the Visible only for this project checkbox to configure the visibility of the server access configuration.
Select the checkbox to restrict the use of the configuration to the current project. Such configuration cannot be reused outside the current project. It does not appear in the list of available configurations in other projects.
When the checkbox is cleared, the configuration is visible in all PhpStorm projects. Its settings can be reused across several projects.
Specify user credentials defined during registration on the host
For FTP and FTPS servers, specify the registration mode:
To login in a regular mode, specify the login in the User name field.
To enable anonymous access to the server with your email address as password, select the Login as anonymous checkbox.
Specify the way to authenticate to the server:
For FTP and WebDAV servers, type your password and select the Save password checkbox to have PhpStorm remember it.
For SFTP server, choose one of the created SSH configurations, or click and create a new configuration as described in Create SSH configurations.
For FTPS server, specify your username and password. In the Advanced settings area, choose the security mechanism to apply.
Choose Explicit to have the explicit (active) security applied. Immediately after establishing connection, the FTP client on your machine sends a command to the server to establish secure control connection through the default FTP port.
This method is selected by default.
Choose Implicit to have the implicit (passive) security applied. In this case, security is provided automatically upon establishing connection to the server, which appoints a separate port for secure connections.
Note that this method is considered deprecated, and using it is discouraged.
Enable connection to the server and specify the server configuration root
For FTP/FTPS/WebDAV servers, specify the host name of the server to exchange data with and the port at which this server listens. The FTP/FTPS, the default value for the port is 21. For WebDAV, the default value is 6180.
For SFTP servers, the values specified in the selected SSH configuration are used.
In the Root path field, specify the server configuration root relative to the root folder on the server. This folder will be the highest one in the folder structure accessible through the current server configuration.
Do one of the following:
Accept the default / path, which points at the root folder on the server.
Type the path manually or click and select the desired folder in the Choose Root Path dialog that opens.
Click Autodetect. PhpStorm detects the user home folder settings on the FTP/SFTP server and sets up the root path according to them. The button is only enabled when you have specified your credentials.
In the Web server URL field, type the URL address to access the server configuration root. The server configuration root is the highest folder in the file tree on the local or remote server accessible through the server configuration. For in-place servers, it is the project root.
Both the HTTP and the HTTPS protocols are supported.
Click in the field to make sure that the specified server root URL address is accessible and points at the correct Web page.
(Optional) For SFTP servers, select Use rsync for download/upload to have PhpStorm use Rsync for uploading and downloading files, which can increase file transfer speeds.
Click the Rsync Settings link and configure Rsync settings in the dialog that opens:
Provide the paths to the
rsync
andssh
executables.On macOS and Linux, the
rsync
andssh
tools are preinstalled and their paths are filled automatically.On Windows, you need to manually install Cygwin with the
rsync
andopenssh
packages first. The tools' executables are commonly located in the <Cygwin installation>\bin folder.
If necessary, override the Rsync command-line parameters in the Rsync options field.
By default, the
-zar
options are used, so that Rsync will compress the transferred data (z
), preserve permissions, ownership, and timestamps of transferred files and folders (a
), and recurse into subdirectories (r
).For the complete list of available options, refer to the Rsync documentation.
Map local folders to folders on the server and the URL addresses to access them
Configure mappings, that is, set correspondence between the project folders, the folders on the server to copy project files to, and the URL addresses to access the copied data on the server. The easiest way is to map the entire project root folder to a folder on the server. The project folder structure in this case will be repeated on the server, provided that you have selected the Create Empty directories checkbox in the Options dialog. For more details, see Configure synchronization with a Web server and Customize upload and download.
Press Ctrl+Alt+S to open the IDE settings and select
.Alternatively, from the main menu, select
.Click the Mappings tab.
In the Local Path field, specify the full path to the desired local folder. In the simplest case it is the project root.
In the Deployment Path field, specify the folder on the server where PhpStorm will upload the data from the folder specified in the Local Path field. Type the path to the folder relative to the server configuration root.
If the folder with the specified name does not exist yet, PhpStorm will create it, provided that you have selected the Create Empty directories checkbox in the Options dialog. For more details, see Customize upload and download.
In the Web Path field, type the path to the folder on the server relative to the server configuration root. Actually, type the relative path you typed in the Deployment Path field.
Overloading the deployment destination by configuring nested mappings
You can configure separate mappings for a specific folder under your project root to have the contents of this folder synchronized with another location on the remote host.
Suppose you have configured the mappings as follows:
Local Path | Deployment Path |
---|---|
<project_root> | ftp://.../htdocs/my_project |
<project_root>/my_folder | ftp://.../htdocs/my_folder |
Then the files in your project will be uploaded as follows:
Local Path | Deployment Path |
---|---|
<project_root>/file1.php | ftp://.../htdocs/my_project/file1.php |
<project_root>/my_folder/file2.php | ftp://.../htdocs/my_folder/file2.php instead of ftp://.../htdocs/my_project/my_folder/file2.php |