This article mainly introduces to you about the PHP remote multi-session debugging related Materials, the text through the sample code and pictures introduced in very detailed, to everyone's study or work has a certain reference learning value, the need for friends below with small to learn together.
First, Background introduction
This article mainly introduce to you about the PHP remote multi-session debugging related content, share out for everyone to reference the study, the following words do not say more, come together to see the detailed introduction:
What to FIX: multiple project Breakpoint debugs, The Www.mysite.com project invokes the Api.mysite.com project rest interface, which makes it easier to directly debug the interfaces in the Api.mysite.com project when the action is triggered under the Www.mysite.com project.
What scenarios apply: cross-project debugging, remote debugging, and easier to use than simple var_dump.
Second, remote debugging configuration
NGINX+PHP-FPM environment, Configuration php.ini expansion
[xdebug]zend_extension =/usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226/xdebug.soxdebug.remote_ Enable=1remote_handler=dbgpxdebug.remote_host=localhostxdebug.remote_port=9000xdebug.idekey=xdebug
Note: CLI environment PHP with FPM PHP whether to use different php.ini configuration files, need to configure FPM corresponding to the php.ini
Check that the configuration is correct
Map Remote (FPM host 10.99.1.185) port 9000 to local Port 9000:
Ssh-cng-r 9000:localhost:9000 root@10.99.1.185
You can use SSH commands directly after installing OpenSSH locally
The server can see that 9000 ports are occupied by SSH
Phpstorm also needs to configure Xdebug, which configures a debug session that is enabled for multiple, port 9000, to accept external requests.
Configuration item-related path mapping, domain name, port
Three, cross-session (project) Debug Configuration
The core of cross-project debugging is to send the conditions that trigger Xdebug debugging as parameters to the Api.mysite.com project or to other subsequent projects.
The WWW project code is as follows:
frontend.php
<?php$personjson = file_get_contents (' http://api.mysite.com/backend.php '); $person = Json_decode ($personJson); Var_dump ($person);
The API project code is as follows:
backend.php
<?phpclass person {public $Name;p ublic $Email;} $person = new Person (), $person->name = "Maarten"; $person->email = "maarten.balliauw@jetbrains.com"; Echo Json_ Encode ($person);
The WWW project needs to be modified to add the network request parameters that the XDEBUG needs to trigger remote debugging:
<?php$debuggingquerystring = '; if (isset ($_get[' Xdebug_session_start ')) {//xdebug$debuggingquerystring = ' Xdebug_session_start= '. $_get[' Xdebug_session_start ');} if (Isset ($_cookie[' xdebug_session ')) {//XDEBUG (COOKIE) $debuggingQuerystring = ' Xdebug_session_start=phpstorm ';} if (Isset ($_get[' Start_debug ')) {//Zend Debugger$debuggingquerystring = ' start_debug= '. $_get[' Start_debug '];} $personJson = file_get_contents (' http://api.mysite.com/backend.php '. $debuggingQuerystring); $person = Json_decode ( $personJson); Var_dump ($person);
Your own project can add cookie parameters to the generic network request encapsulation class:
curl_setopt ($this->ch, Curlopt_cookie, "Xdebug_session=xdebug");
Iv.. Commissioning Process
-
Ensure that the debug parameters have been forwarded to the API interface
-
Increase the number of sessions that can be debugged
-
Turn on debug snooping, Open the server xdebug