我尝试了许多方法来调试我的远程服务器,但我无法这样做。我的ftp和sftp和远程数据库配置到我的phpstorm 9,但我不能调试我的远程服务器,它连接到我的mamp服务器和调试,y本地文件,但没有连接到服务器的用户名和密码。基本上,它在mysql_connect上失败,但在mamp上工作。我怎样才能使它调试与服务器。其他一切都与服务器同步,但我无法调试。我非常感谢你的帮助。
编辑:我应该在我的服务器(cpanel)上也安装x-debug吗?
. 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
也许我没有理解你的问题。以下是调试代码的方法
调试使用本地数据库的本地代码
这是最简单的设置,它可能已经在您的系统上工作了。你在本地计算机上有所有的文件,并且你有一个MySQL实例在上面运行。代码连接localhost:3306
,安装xdebug
扩展,可以连接PhpStorm
,皆大欢喜
调试使用远程数据库的本地代码
您可以将所有PHP文件放在localhost
上,并使用本地mamp
堆栈来调试它;你控制环境,xdebug
工作,并愉快地与PhpStorm
合作。您希望代码能够使用远程(活动)数据库。
在这种情况下,您需要一种访问数据库的方法。您可以创建一个允许您从本地计算机的IP地址连接的MySQL
用户(在此过程中防火墙可能会阻止这一点),或者启动一个ssh
会话,该会话从本地端口3306
(或您选择的任何其他开放端口)创建一个隧道到数据库服务器的端口3306
(假设允许您ssh连接的主机)。可以通过运行
ssh user@remote_host -L 3306:database_host:3306
(将user
, remote_host
和database_host
替换为您的实际值)
如果你有一个MySQL服务器安装并运行在localhost
上,那么本地端口3306
没有打开,ssh
不能使用它作为隧道的源端口。使用另一个端口代替(假设使用13306):
ssh user@remote_host -L 13306:database_host:3306
修改应用程序的本地配置文件,使用localhost
作为数据库服务器,使用13306
作为数据库端口。
调试远程代码
如果你想调试实时代码(它使用实时数据库),那么你必须将代码上传到web服务器(实时环境)并使其在那里工作(能够连接到数据库等)
为了能够调试它,你需要在服务器上安装xdebug
PHP扩展,并在服务器的php.ini
配置文件中正确配置。
调试器(远程xdebug
扩展)需要连接到PhpStorm
在端口9000
上侦听的本地计算机。这要么是不可能的,要么是需要在几个地方改变配置(这可能超出你的控制范围);我们最好忘了它。
我们可以使用ssh隧道技巧:启动到服务器的ssh连接,创建从本地端口9000
到服务器端口9000
的隧道:
ssh user@remote_host -L 9000:localhost:9000
测试是否有效
PhpStorm
提供了一个工具,该工具将脚本上传到web服务器上,然后尝试访问它以检查xdebug
扩展是否正确配置。根据您使用的PhpStorm
版本,您可以在菜单(Run
-> Web Server Debug Validation
,在PhpStorm 9
上)或Settings
(PHP
-> Servers
或左右,在旧版本上)中找到它。