Optimization debugging techniques and skills for PHP programmers. This article describes various methods for debugging PHP applications, including opening error reports in ApacheandPHP and placing strategic print statements in a simple PHP script, find out how to Debug PHP applications, including opening error reports in Apache and PHP, and placing strategic print statements in a simple PHP script, find the source of a more difficult bug. The PHPEclipse plug-in for Eclipse is also introduced. this is a flexible development environment with real-time syntax parsing capabilities. The DBG debugger extension for PHPEclipse is also introduced.
Introduction
Many PHP debugging technologies can save a lot of time in coding. An effective but basic debugging technique is to open an error report. Another slightly more advanced technique involves the use of print statements to help precisely identify more difficult bugs by actually appearing on the screen. PHPEclipse is an Eclipse plug-in that can emphasize common syntax errors and can be used with the debugger to set breakpoints.
Set
To learn the concepts described in this article, PHP, Web server, and Eclipse are required. The PHP version supported by the debugger extension is V5.0.3.
We need a Web server to parse the pages created with PHP and display them to the browser. Apache2 is used in this article. However, any Web server can meet the requirements.
To use some debugging techniques described in this article, you need to install Eclipse V3.1.1 and PHPEclipse V1.1.8. Because Eclipse requires Java? Technology, so you need to download it.
You also need the PHP debugger extension module. Installing it is a little troublesome. Follow the instructions for installing the debugger extension carefully. Now, comment out the lines that require loading and configuring php extensions in the PHP. ini file. Cancel the comment when you need to use the debugger.
See references for download information. This section describes error messages.
Error message
Error messages are the first line of defense for developers. No one wants to develop code with PHP on a server that is not configured to display error messages. However, remember that when the code debugging is complete and you are ready to run it, make sure that the error report is disabled because you do not want the site visitors to see the error message, this will give them enough information to take advantage of the site's vulnerabilities and hack the site.
You can also use error messages to serve yourself, because they will display the correct code lines that throw or generate errors. In this way, debugging becomes to view the row number of the generated error in the browser, and check this line in the code. Later, you will see the PHPEclipse plug-in instantly underline the syntax error and mark the syntax error with the red "x" when saving the file, it can be of great help in the development and debugging process.
First, let's take a look at how to enable the error report in the php. ini file and set the error report level. Then we will learn how to overwrite these settings in the Apache configuration file.
PHP error report
The php. ini file contains many configuration settings. You should have set your php. ini file and place it in the appropriate directory, as shown in instructions for installing PHP and Apache 2 on Linux (see references ). When debugging a PHP application, you should know two configuration variables. The two variables and their default values are as follows:
display_errors = Off error_reporting = E_ALL |
By searching for these variables in the php. ini file, you can find the current default values of these two variables. The purpose of the display_errors variable is obvious-it tells PHP whether an error is displayed. The default value is Off. However, to make the development process easier, set this value to On:
The default value of error_reporting variable is E_ALL. This setting displays all information from poor coding practices to harmless prompts to errors. E_ALL is a little too detailed for the development process, because it displays a prompt on the screen for some trivial matters (for example, the variable is not initialized), it will mess up the browser output. I only want to see errors and bad code practices, but do not want to see harmless prompts. Therefore, replace the default value of error_reporting with the following values:
error_reporting = E_ALL & ~E_NOTICE |
Restart Apache and set all the settings. Next, we will learn how to do the same thing on Apache.
Server error report
Depending on what Apache is doing, opening an error report in PHP may not work, because there may be multiple PHP versions on the computer. Sometimes it is difficult to tell which PHP version Apache is using, because Apache can only view one php. ini file. I don't know which php. ini file Apache is using to configure itself as a security issue. However, there is a way to configure the PHP variable in Apache to ensure that the correct error level is set.
In addition, it is better to know how to set these configuration variables on the server side to reject or preemptible the php. ini file to provide higher-level security.
When configuring Apache, you must have been exposed to the basic configuration in the http. conf file in/conf/httpd. conf.
To add the following lines to the httpd. conf file to overwrite any php. ini file:
php_flag display_errors on php_value error_reporting 2039 |
This overwrites the flag set for display_errors and the value of error_reporting in the php. ini file. The value 2039 represents E_ALL &~ E_NOTICE. If you want to use E_ALL, set the value to 2047. Similarly, restart Apache.
Next, test the error report on the server.
Test error report
If an error report is started, it will save a lot of time. Errors in PHP point to errors in the code. Create a simple PHP file test. php and define it as shown in listing 1.
Listing 1. a simple PHP with incorrect generation
"); printaline("PLEASE?"); print("This will not be displayed due to the above error."); ?> |
The first print () statement will display its content to the Web browser. However, the second statement will generate an error and display it on the Web page. This makes the last print () statement ineffective, as shown in 1.
Figure 1. generation error
The error report is now enabled! Next, use the print statement to debug the application.
Introduction to print statements
Because functional bugs in applications do not produce errors, in all debugging policies, knowledge about how to correctly place and use print or die statements to Debug PHP applications is a good asset. You can use print statements to narrow down the problem statement positioning in the code. these statements have no syntax errors or bugs, but they are bugs in the code function. These are the most difficult bugs to discover and debug, because they do not throw errors. The only thing you know is that the content displayed on the browser is not what you want, or the content you want to save in the database is not saved at all.
Assume that you are processing the form data sent through the GET request and want to display the information to the browser. However, for some reason, the data is not submitted correctly or cannot be correctly read from the GET request. To debug this type of problem, it is important to use print () or die () statements to know the value of the variable.
The die () statement terminates program execution and displays text in a Web browser. If you do not want to comment out the code, and only want to display the information before and after the error, then the die () statement is particularly useful.
Let's use the print statement in PHP to test this concept.
Debug with the print statement
When I was a programmer, when I was in Linux? When developing applications, there is no convenient GUI to tell me where the bug is. I quickly found that the more print statements I put in the program, the larger chance is to narrow down the bug scope to a row in the application. Create another PHP file test2.php and define it as shown in listing 2.
Listing 2. show all variables submitted through GET
Various methods of the composer PHP application, including opening error reports in Apache and PHP, and placing strategic print statements in a simple PHP script to find... |