The seamlessness provided by the integrated PhpStorm debugger is extremely helpful as you don’t need to leave your IDE while debugging. To debug both your JS and PHP, you have to have Xdebug already enabled and setup with PHP and PhpStorm. I won’t go over that here, but here is a good post to get you up and running with MAMP. Xdebug, PhpStorm and MAMP – OSX – Setup Guide October 30, 2014 by Michael Schurpf Very excited to present my own Setup Guide to get Xdebug, PhpStorm and MAMP to play nice together. Our goal here is to get remote debugging setup to be able to debug any line within a much bigger web app.
FeaturesPhpStormTutorialsThis blog post is obsolete!
Please check new up-to-date tutorial on Zero-configuration Web Application Debugging with Xdebug and PhpStorm
Hello guys,
We have done a lot of work to simplify the debugging process in PhpStorm 2.0 and we are very grateful to our early adopters for their invaluable feedback. Let’s try a new debugging work flow in PhpStorm 2.0.
Installation of Xdebug
Make sure that you have installed Xdebug properly. Don’t forget to set the xdebug.remote_enable setting to 1. You can validate your installation using checker from xdebug.org
Prepare PhpStorm
Toggle the ‘PHP Listen debug connections’ button. Don’t use any run configurations.
Set a breakpoint.
Activate debugger on server
In order to activate the debugger you need to set the special GET/POST or COOKIE parameter (more details). You can do it manually, but it is much more convenient to use one of the special tools such as browser toolbars or bookmarklets for that.
Try our bookmarklets generator and get bookmarklets which will work in any modern browser and allow you to start/stop a debugging session by controlling the Xdebug cookie.
Start a debug session in browser.
Reload the current page.
Switch to PhpStorm and set the initial path mappings by selecting the path to the local copy of the script that we are debugging. These paths are similar if you are editing files directly on the server.
On reaching the breakpoint the debugger suspends. Now let’s investigate the application!
Troubleshooting
In some cases you may get an error message “Remote file path ‘path/to/script/on/server.php’ is not mapped to any file path in project“. This means that PhpStorm does not know which local file corresponds to the specified remote file path.
You can solve this problem quickly. Just click the ‘Edit path mappings’ link and set the necessary path mappings.
AMP packages are operating system-specific. The most common ones are:
XAMPP for Windows.
The LAMP package compatible with the Linux distribution used.
MAMP for macOS.
It is recommended that you use version 1.7.1 or later.
The installation procedure depends on the operating system used, follow the installation instructions provided.
If you are using Windows Vista, avoid installing the package in the Program Files folder. This folder is write-protected by default, which means that no files can be placed on the server and further processed by the PHP engine.
Install and configure an AMP package
Download and install the desired AMP package.
Use the AMP control pane to start the components.
If the web server does not start, most likely a port conflict takes place. By default, the Apache HTTP server listens to port 80. This port can be already used by other services, for example, Skype. To solve the issue, update the server configuration file as follows:
Locate the line
Listen 80
and change it to, for exampleListen 8080
.Locate the line
ServerName localhost:80
and change it accordingly, in this example toServerName localhost:8080
.
Save the configuration file and restart the Web server.
To check your installation, open your browser and type the following URL address: http://localhost:<port number>. The AMP welcome page appears.
Integrate an AMP package with PhpStorm
Configure a local interpreter as described in Configure local PHP interpreters.
Install and configure a debugging engine as described in Configure a debugging engine.
Configure integration with MySQL server as described in MySQL.
MAMP is the macOS package comprising Apache HTTP server, MySQL database, PHP interpreter, and some libraries. The word 'MAMP' is an acronym, where 'M' stands for 'Macintosh', meaning it's designed for macOS, and the other letters stand for the package components.
MacOS comes with the pre-installed PHP interpreter and Apache server, which can be configured to work well together following the tutorial published by php.net. PhpStorm-related configuration is similar to the one described in this tutorial. Since installing additional packages and configuring the system environment on your own can be tricky, this guide describes how to get everything set up at once easily in a separate environment with complete MAMP package.
is a reliable and fast way to set up an environment for PHP programming. It provides all the components required for developing, running, debugging, and unit testing of PHP applications. is a good alternative to installing and configuring a Web server, a PHP engine, a database server, and a debug engine separately. To start developing, you will only need to download and install , and start the components using the control panel.
Downloading and installing MAMP
Download and install MAMP from the MAMP Downloads page. Once the MAMP archive is downloaded, unpack it and run the installer. The MAMP installation wizard is pretty straightforward, you only need to proceed through the installation steps.
Having installed MAMP and launched its components, we now need to tell the IDE where these components are stored and how they are configured.
MAMP Control Panel
After installation, use the MAMP Control Panel to perform such actions as starting or stopping servers and changing configurations. The MAMP Control Panel application can be found in the Applications/MAMP folder.Starting and stopping servers
To start the Apache and MySQL servers, click the Start Servers button.
The icons in the top-right corner will become green-colored. Once the servers are started, you can stop them at any time by clicking the Stop Servers button.
The Start Page (http://localhost:8888/MAMP/ by default) will open in the browser. This page contains the information about your environment and provides useful links.
To configure MAMP, click the Preferences... button.
Several options are available:
Modify the Start/Stop Servers configuration on the Start/Stop tab.
Specify the Apache and MySQL ports on the Ports tab.
Specify the PHP version and caching options on the PHP tab.
Set the web server document root on the Web Server tab.
Integrating MAMP with the IDE
Integrating the PHP executable
Let's start by registering the PHP executable from MAMP in PhpStorm. In the Settings/Preferences dialog Ctrl+Alt+S, navigate to PHP.
With PhpStorm, we can have several separate PHP interpreters registered in the IDE, depending on the PHP version or PHP configuration needed for the project. All currently registered installations of PHP interpreters are displayed in the CLI Interpreter list:
Phpstorm Xdebug Ssh
Add the interpreter installed with MAMP
Click to the right of the list. The CLI Interpreters dialog opens.
In the left-hand pane, click the button on the toolbar.
In the Name field, type the name to identify the current installation, for example MAMP PHP 7.1.
In the PHP executable field, specify the folder where the php (PHP executable) file is stored. Either enter the path manually or click and locate the file.
PhpStorm checks whether the specified folder contains a PHP executable file, detects the PHP version, and displays it in the PHP Info read-only field. PhpStorm also validates that the debugger is configured correctly.
We can now save these settings and select the newly added PHP interpreter for our project:
PhpStorm will now use the PHP installation that was bundled with MAMP.
Integrating the debugger
PhpStorm offers a powerful debugger in which breakpoints can be set and variables can be inspected at runtime. For more information on using PhpStorm's debugger, explore Debug with PhpStorm: Ultimate Guide.
Note that if you are using the latest MAMP PRO, the httpd.conf, php.ini and my.cnf files should be edited through the Template Editor provided by MAMP PRO. To edit the template files, navigate to File | Edit Template. When MAMP PRO starts the Apache and MySQL servers it uses these templates to create httpd.conf and php.ini files, erasing the previously created ones.
Once you have installed and configured the debugger, you can validate your debugging configuration by performing the steps described in Validate the Configuration of a Debugging Engine.
Integrating the Apache server
Interaction between PhpStorm with Web, FTP, and other servers is handled by the FTP/SFTP Connectivity plugin, which is enabled by default. The IDE accesses servers using the connection settings specified in the registered server access configurations.
Create and manage server access configurations
In the Settings/Preferences dialog Ctrl+Alt+S, click Deployment under Build, Execution, Deployment.
Click the on the toolbar, select the Local or mounted folder, and specify the name for the MAMP in the dialog that opens.
After clicking OK, we can specify the path of the Apache's web root /Applications/MAMP/htdocs and the URL of the web server, http://localhost:8888. Note that the actual settings depend on how you have configured the MAMP Apache server in the MAMP configuration or Apache configuration files.
Don't forget to mark the server as default by clicking , so that PhpStorm uses it with browser integration instead of the built-in web server. By clicking Open, we can open the MAMP htdocs folder in the browser and thus verify that the provided settings are correct.
Integrating the MySQL server
PhpStorm allows to connect to the MAMP MySQL database server using the Database Tools and SQL plugin, which is installed and enabled by default. Before you start, make sure that the MySQL server is running on the MAMP PRO Control Panel. If you are using MAMP PRO, also make sure that the Allow network access to MySQL checkbox is selected on the MAMP PRO Control Panel.
From the right-hand side of the IDE, open the Database tool window.
Here, we can create a new connection or Data Source by using the context menu or the toolbar button. We need to specify the JDBC database driver that will be used to connect to our database. For MySQL, we can use the MySQL Connector driver available in the list of drivers. PhpStorm doesn't ship these drivers but we can download the correct JDBC driver by clicking link.
Next, we need to enter the connection details. Alternatively, we can provide the connection string to the MySQL Database in the Database URL field, for example jdbc:mysql://localhost:8889/ or jdbc:mysql://localhost:8889/foodb to connect to the foodb database.
We can also specify the username and password for MySQL. By default, MAMP uses root both as the username and the password.
When using UTF-8 or unicode characters in the username, password or database name, two additional parameters must be added to the connection string: characterEncoding
and useUnicode
. An example connection string would be jdbc:mysql://localhost:8889?characterEncoding=utf8&useUnicode=true
. It may also be required to select a different JDBC driver from the list, that is, com.mysql.jdbc.NonRegisteringDriver
.
Having defined the data source, use the Test Connection button to verify the settings and make sure PhpStorm can connect to MySQL.
We can now create tables, run queries, update data and so on. See Database tools and SQL for more information.
XAMPP is a cross-platform package consisting of an Apache HTTP server, MySQL database, PHP interpreter, and Perl interpreter. The word 'XAMPP' is an acronym, where 'X' stands for 'cross', meaning 'cross-platform', and the other letters stand for the package components.
is a reliable and fast way to set up an environment for PHP programming. It provides all the components required for developing, running, debugging, and unit testing of PHP applications. is a good alternative to installing and configuring a Web server, a PHP engine, a database server, and a debug engine separately. To start developing, you will only need to download and install , and start the components using the control panel.
Downloading and installing XAMPP
Download and install XAMPP from the XAMPP Downloads page. Once the XAMPP archive is downloaded, unpack it and run the installer. The XAMPP installation wizard is pretty straightforward, you only need to proceed through the installation steps.
Having installed XAMPP and launched its components, we now need to tell the IDE where these components are stored and how they are configured.
XAMPP Control Panel
After installation, use the XAMPP Control Panel to perform such actions as starting or stopping servers and changing configurations.Starting and stopping servers
To start a specific server, click the Start button next to it.
By default, none of the servers such as Apache or MySQL are installed as Windows Services. This means that whenever we want to make use of these servers, we have to manually start them through the XAMPP Control Panel. When a server runs as a Windows Service, it with Windows automatically.
Run a specific server as a Windows Service
Open the XAMPP Control Panel as an administrator.
Stop the server you want to install as a Windows Service by clicking the Stop button.
Click X next to the server and confirm the service installation. Once the installation succeeds, a green checkmark will be displayed next to the server, indicating the server is now running as a Windows Service.
Integrating XAMPP with the IDE
Integrating the PHP executable
Let's start by registering the PHP executable from XAMPP in PhpStorm. In the Settings/Preferences dialog Ctrl+Alt+S, navigate to PHP.
With PhpStorm, we can have several separate PHP interpreters registered in the IDE, depending on the PHP version or PHP configuration needed for the project. All currently registered installations of PHP interpreters are displayed in the CLI Interpreter list:
Add the interpreter installed with XAMPP
Click to the right of the list. The CLI Interpreters dialog opens.
In the left-hand pane, click the button on the toolbar.
In the Name field, type the name to identify the current installation, for example XAMPP PHP 7.2.
In the PHP executable field, specify the folder where the php (PHP executable) file is stored. Either enter the path manually or click and locate the file.
PhpStorm checks whether the specified folder contains a PHP executable file, detects the PHP version, and displays it in the PHP Info read-only field. PhpStorm also validates that the debugger is configured correctly.
We can now save these settings and select the newly added PHP interpreter for our project:
PhpStorm will now use the PHP installation that was bundled with MAMP.
Integrating the debugger
PhpStorm offers a powerful debugger in which breakpoints can be set and variables can be inspected at runtime. For more information on using PhpStorm's debugger, explore Debug with PhpStorm: Ultimate Guide.
Once you have installed and configured the debugger, you can validate your debugging configuration by performing the steps described in Validate the Configuration of a Debugging Engine.
Integrating the Apache server
Interaction between PhpStorm with Web, FTP, and other servers is handled by the FTP/SFTP Connectivity plugin, which is enabled by default. The IDE accesses servers using the connection settings specified in the registered server access configurations.
Create and manage server access configurations
In the Settings/Preferences dialog Ctrl+Alt+S, click Deployment under Build, Execution, Deployment.
Click on the toolbar, select the Local or mounted folder, and specify a name for the XAMPP server.
After clicking OK, we can specify the path of the Apache's web root C:xampphtdocs and the URL of the web server, http://localhost. Note that the actual settings depend on how you have configured the XAMPP Apache server through the C:xamppapacheconfhttpd.conf configuration file.
Don't forget to mark the server as default by clicking , so that PhpStorm uses it with browser integration instead of the built-in web server.
By clicking Open, we can open the MAMP htdocs folder in the browser and thus verify that the provided settings are correct.
Integrating the MySQL server
PhpStorm allows to connect to the XAMPP MySQL database server using the Database Tools and SQL plugin, which is installed and enabled by default. Before you start, make sure that the MySQL server is running on the XAMPP Control Panel.
Phpstorm Xdebug Not Working
From the right-hand side of the IDE, open the Database tool window.
Here, we can create a new connection or Data Source by using the context menu or the toolbar button. We need to specify the JDBC database driver that will be used to connect to our database. For MySQL, we can use the MySQL Connector driver available in the list of drivers. PhpStorm doesn't ship these drivers but we can download the correct JDBC driver by clicking link.
Next, we need to enter the connection details. Alternatively, we can provide the connection string to the MySQL Database in the Database URL field, for example jdbc:mysql://localhost:3306/ or jdbc:mysql://localhost:3306/foodb to connect to the foodb database.
Note that it is recommended to change the default MySQL username and password after installing XAMPP, which can be done on the http://localhost/security/xamppsecurity.php page.
We can also specify the username and password for MySQL. By default, XAMPP uses root as the username, and a blank password.
When using UTF-8 or unicode characters in the username, password or database name, two additional parameters must be added to the connection string: characterEncoding
and useUnicode
. An example connection string would be jdbc:mysql://localhost:8889?characterEncoding=utf8&useUnicode=true
. It may also be required to select a different JDBC driver from the list, that is, com.mysql.jdbc.NonRegisteringDriver
.
Having defined the data source, click the Test Connection button to verify the settings and make sure PhpStorm can connect to MySQL.
Xdebug Phpstorm Cli
We can now create tables, run queries, update data and so on. See Database tools and SQL for more information.