I have tried many ways to debug my remote server but I am unable to do so. My ftp and sftp and remote db is configures to my phpstorm 9 but I cannot debug my remote server it is connecting to my mamp server and debugging ,y local files but not connecting to server username and password . Basically it fails at mysql_connect but works for mamp.How can I make it deubug with server.Everything else is synced with server but I cannot debug. I really appreciate any help.
Edit: Should I install x-debug on my server(cpanel) also ?
php.ini
[xdebug]
zend_extension="/usr/local/opt/php55-xdebug/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.idekey=PHPSTORM
xdebug.remote_connect_back=1
Maybe I didn't understand your question/problem. These are the ways you can debug your code
Debug the local code that uses the local database
This is the easiest setup and it probably already works on your system. You have all the files on the local computer and also you have an instance of MySQL running on it. The code connects to localhost:3306, the xdebug extension is installed and it can connect to PhpStorm, everybody is happy.
Debug the local code that uses the remote database
You can have all the PHP files on localhost and use the local mamp stack to debug it; you control the environment, xdebug works and happily collaborates with PhpStorm. You want the code to be able to use the remote (live) database.
In this case you need a way to access the database. Either you create a MySQL user that allows you to connect from the IP address of the local computer (a firewall along the way might prevent this), or start a ssh session that creates a tunnel from the local port 3306 (or any other open port you choose) to port 3306 of the database server (assuming the host where you ssh is allowed to connect to it). You can do this by running
ssh user#remote_host -L 3306:database_host:3306
(replace user, remote_host and database_host with your actual values)
If you have a MySQL server installed and running on localhost then the local port 3306 is not open and ssh cannot use it as the source port of the tunnel. Use another port instead (let's say you use 13306):
ssh user#remote_host -L 13306:database_host:3306
Modify the local configuration files of your application to use localhost as database server and 13306 as database port.
Debug the remote code
If you want to debug the live code (it uses the live database) then you have to upload the code on the web server (the live environment) and make it work there (be able to connect to the database etc).
In order to be able to debug it you need to have the xdebug PHP extension installed on the server and properly configured in the server's php.ini configuration file.
The debugger (the remote xdebug extension) needs to connect to your local computer where PhpStorm is listening on port 9000. This is either impossible or making it happen requires changing configuration here and there in several places (that might be out of your control); we better forget about it.
We can use the ssh tunnel trick: start a ssh connection to the server that creates a tunnel from local port 9000 to the servers port 9000:
ssh user#remote_host -L 9000:localhost:9000
Test if it works
PhpStorm provides a tool that uploads a script on the web server then tries to access it to check if the xdebug extension is properly configured. Depending on the version of PhpStorm you use, you can find it either in the menu (Run -> Web Server Debug Validation, on PhpStorm 9) or somewhere in the Settings (PHP -> Servers or around, on older versions).
Related
I'm trying to debug my PHP code running on a remote server using PhpStorm's Xdebug feature. A few weeks ago I was able to do this on another computer, but I no longer have that computer. I reinstalled and configured PhpStorm and can run SFTP and SSH with the remote server on the new computer. I tried using PuTTY, and was successfully able to use it to SSH Tunnel between the two computers and run Xdebug. But it wasn't a 'good' as the way I was able to do this on the other computer, which didn't need PuTTY.
I believe that the problem has to do with setting up Port-9000 forwarding. I added a rule for this to my BitDefender BOX2 for the local computer I develop on, but I still get refused. The tech at BitDefender thought that there may be another port that needs to be opened/forwarded in addition to port 9000.
Because the PuTTY method works on the new computer, I'm confused. Why does this work with PuTTY, but not directly with PhpStorm (without the help of PuTTY)?
Xdebug only needs port 9000, so that is the only port that PhpStorm will listen on, and Xdebug needs to connect to. I don't know BitDefender, but perhaps you only allowed outgoing connections, and not the incoming ones that you should allow?
Are the two machines on the same network, or is your machine behind a NAT network to the outside world, where your remote machine lives? In that case, you probably can't get around using your SSH tunnel with PuTTY.
You don't mention any settings, but it is worthwhile to check what shows up in the xdebug log file (when configured with xdebug.remote_log=/tmp/xdebug.log on your remote machine). It will show what Xdebug tries to connect to, and whether (and sometimes even why) the connection failed.
I have installed MySQL on Ubuntu using SSH and would like to connect phpMyAdmin installed on a Windows machine.
I tried to add a server like standard server, but I can not log in to MySQL server using SSH.
Does phpMyAdmin support to connect a remote server using SSH? If yes, how can I configure a private key for phpMyAdmin or do I need a SSH client for this?
I think there's a bit of misunderstanding that might be hindering you sorting this out.
SSH is the Secure Shell protocol, which allows a user to remotely access the command line of a server. You can access MySQL via SSH by using SSH to start a command line session on the server and using the mysql command line client as if you were at the machine directly.
phpMyAdmin can connect to a local MySQL instance (where MySQL and your webserver run on the same machine) or connect to another machine through the network (where MySQL is running on one machine and your webserver is running on another -- the connection in this case is via the the port used by MySQL itself, 3306). In either case, you can access phpMyAdmin itself from any browser on the network; it just appears as any web page. The communication between MySQL and phpMyAdmin can be encrypted (via SSL) if you wish, but still happens via MySQL communication and not over SSH. At no point is SSH used for the communication from the web server to the MySQL server.
So in your case, since you wish to install phpMyAdmin on the Windows box, you'd simply edit your config.inc.php to connect to the IP address or hostname of the Ubuntu server with the $cfg['Servers'][$i]['host'] = 'hostname'; directive, using the actual hostname instead. You'd then access phpMyAdmin from anywhere on the network by using the hostname or IP address of the Windows machine.
If, instead, you wish to install phpMyAdmin on to the Ubuntu machine, you could use the host name 'localhost' in config.inc.php and then access phpMyAdmin from the Windows machine (or any other machine) using the Ubuntu IP address/host name in your web browser.
It all depends which machine you wish to be the web server. phpMyAdmin runs under IIS or Apache runs under Windows, but Ubuntu makes installing all the programs easy through the package manager, so that's what I generally do in this situation.
Hope that helps clear it up a bit.
I want to SSH connect to a REMOTE MySQL db by pointing to, say, the LOCAL 3306 port; so far, I was able to do so by:
Installing/setting up FreeSSHd in the remote server (Windows 7).
Create an SSH tunnel and do port forwarding using putty.exe in the local
machine (Windows 8.1)
I followed the instructions of these two articles here (in spanish, sorry :/ ):
FreeSSHd on the server
SSH tunneling
I've heard somewhere that if the remote server is running on Linux the step 1 is not always required. Do you guys know if there's a way/weird-trick to skip step 1 (setting up anything on the remote server, rather than installing MySQL Server)?
Oh I see why this is not possible: It looks like some Linux distros come with a program similar to FreeSSHd by default, and there for, you can skip installing other tools on the server though now I'm sure the configuration will be always required anyways.
I have enabled this through windows Firewall. (I use Avast Free which doesn't have a free firewall) and I have went onto the BT router to port forward this too. Yet I still get system error 10060. I have downloaded PfPortchecker and checked port 3306 and apparently it's still not open.
I am pretty clueless on what to do here, any help is appreciated cheers.
If both MySQL Workbench and your MySQL server run on the same machine then you don't need to open any port on the modem or in the firewall. Focus on problems on your local machine.
First thing to check is: is your server actually running? Is there a service that starts the MySQL server? What setup is that? Did you install the server via the MySQL Windows Installer? If the server is running check the config file if TCP/IP networking is disabled for some weird reason (it should not, but who knows). If that is disabled you can only connect via a named pipe to your server.
Next step is to check is that the user you use to connect is actually allowed to connect from the local machine. Jeremy is right here, it matters if you use localhost or 127.0.0.1, especially if IPv6 is enabled on the box (where localhost resolves to ::1, instead of 127.0.0.1).
I'm a mac novice and trying to get a developer setup to develop php sites locally. The sites he develops have a mysql backend and that is on a remote box. We got xampp installed and working, he can connect from the website to the local mysql box but he cannot connect to the remote box. He is using the exact same connection info I am using from my windows system. I do not have any issues. Also the mysql server is setup to accept all users (we are currently using root) regardless of hostname.
I searched his system and I could not find a mysql.sock file. I do not know what this does, but googled some articles that mentioned.
Please help if you can.
Try Telnetting to the server from your host and see if you get a response.
telnet host 3306
If that doesn't work, you probably have some local firewall on your mac that is blocking the connection. Also, one thing you don't mention is that you can connect from a windows computer and not a mac... are they on the same network? If they're on different networks or in different places, that could indicate a local network issue.
This is definitely not an issue with mysql, but with something on the Mac itself.
The mysql.sock file is relevant only to the machine the MySQL server is running on, for local clients to communicate with the server. For any remote machines, they'll be connecting via TCP on port 3306.
Make sure that port 3306 is open in the server machine's firewall, and that MySQL has been configured to allow TCP connections.