Quite often I will try and run a PHP script and just get a blank screen back. No error message; just an empty screen. The cause might have been a simple syntax error (wrong bracket, missing semicolon), or a failed function call, or something else entirely.
It is very difficult to figure out what went wrong. I end up commenting out code, entering “echo” statements everywhere, etc. trying to narrow down the problem. But there surely must be a better way, right?
Is there a way to get PHP to produce a useful error message, like Java does?
Đang xem: Debug a php cli script
php debugging error-handling
edited Nov 19, 2019 at 18:58
21.1k5959 gold badges7373 silver badges9393 bronze badges
asked May 10, 2009 at 9:48
8,4501010 gold badges2929 silver badges3131 bronze badges
Add a comment |
41 Answers 41
Sorted by: Reset to default
Trending sort available
Trending sort Trending sort is based off of the default sorting method — by highest score — but it boosts votes that have happened recently, helping to surface more up-to-date answers.
It falls back to sorting by highest score if no posts are trending.
Switch to Trending sort
Highest score (default) Trending (recent votes count more) Date modified (newest first) Date created (oldest first)
For syntax errors, you need to enable error display in the php.ini. By default these are turned off because you don”t want a “customer” seeing the error messages. Check this page in the PHP documentation for information on the 2 directives: error_reporting and display_errors. display_errors is probably the one you want to change. If you can”t modify the php.ini, you can also add the following lines to an .htaccess file:
php_flag display_errors onphp_value error_reporting 2039You may want to consider using the value of E_ALL (as mentioned by Gumbo) for your version of PHP for error_reporting to get all of the errors. more info
3 other items: (1) You can check the error log file as it will have all of the errors (unless logging has been disabled). (2) Adding the following 2 lines will help you debug errors that are not syntax errors:
error_reporting(-1);ini_set(“display_errors”, “On”);(3) Another option is to use an editor that checks for errors when you type, such as PhpEd. PhpEd also comes with a debugger which can provide more detailed information. (The PhpEd debugger is very similar to xdebug and integrates directly into the editor so you use 1 program to do everything.)
Cartman”s link is also very good: http://www.ibm.com/developerworks/library/os-debug/