Phpstorm调试mamp,但不是我的远程服务器



我尝试了许多方法来调试我的远程服务器,但我无法这样做。我的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_hostdatabase_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或左右,在旧版本上)中找到它。

最新更新