How can i get error in php?

This always works for me:

ini_set['display_errors', '1'];
ini_set['display_startup_errors', '1'];
error_reporting[E_ALL];

However, this doesn't make PHP to show parse errors - the only way to show those errors is to modify your php.ini with this line:

display_errors = on

[if you don't have access to php.ini, then putting this line in .htaccess might work too]:

php_flag display_errors 1

anthonyryan1

4,5182 gold badges33 silver badges27 bronze badges

answered Jan 29, 2014 at 11:25

Fancy JohnFancy John

37k3 gold badges25 silver badges25 bronze badges

18

You can't catch parse errors when enabling error output at runtime, because it parses the file before actually executing anything [and since it encounters an error during this, it won't execute anything]. You'll need to change the actual server configuration so that display_errors is on and the approriate error_reporting level is used. If you don't have access to php.ini, you may be able to use .htaccess or similar, depending on the server.

This question may provide additional info.

answered Jun 27, 2009 at 19:14

Michael MadsenMichael Madsen

53.3k7 gold badges71 silver badges82 bronze badges

0

Inside your php.ini:

display_errors = on

Then restart your web server.

j0k

22.3k28 gold badges77 silver badges86 bronze badges

answered Jan 8, 2013 at 9:27

user1803477user1803477

1,5651 gold badge9 silver badges4 bronze badges

5

To display all errors you need to:

1. Have these lines in the PHP script you're calling from the browser [typically index.php]:

error_reporting[E_ALL];
ini_set['display_errors', '1'];

2.[a] Make sure that this script has no syntax errors

—or—

2.[b] Set display_errors = On in your php.ini

Otherwise, it can't even run those 2 lines!

You can check for syntax errors in your script by running [at the command line]:

php -l index.php

If you include the script from another PHP script then it will display syntax errors in the included script. For example:

index.php

error_reporting[E_ALL];
ini_set['display_errors', '1'];

// Any syntax errors here will result in a blank screen in the browser

include 'my_script.php';

my_script.php

adjfkj // This syntax error will be displayed in the browser

answered Jan 29, 2014 at 9:52

andreandre

1,8011 gold badge15 silver badges8 bronze badges

2

Some web hosting providers allow you to change PHP parameters in the .htaccess file.

You can add the following line:

php_value display_errors 1

I had the same issue as yours and this solution fixed it.

answered May 18, 2013 at 15:01

KalhuaKalhua

5514 silver badges2 bronze badges

1

You might find all of the settings for "error reporting" or "display errors" do not appear to work in PHP 7. That is because error handling has changed. Try this instead:

try{
     // Your code
} 
catch[Error $e] {
    $trace = $e->getTrace[];
    echo $e->getMessage[].' in '.$e->getFile[].' on line '.$e->getLine[].' called from '.$trace[0]['file'].' on line '.$trace[0]['line'];
}

Or, to catch exceptions and errors in one go [this is not backward compatible with PHP 5]:

try{
     // Your code
} 
catch[Throwable $e] {
    $trace = $e->getTrace[];
    echo $e->getMessage[].' in '.$e->getFile[].' on line '.$e->getLine[].' called from '.$trace[0]['file'].' on line '.$trace[0]['line'];
}

answered Mar 28, 2016 at 19:26

Frank ForteFrank Forte

1,83717 silver badges18 bronze badges

9

This will work:


answered May 5, 2014 at 13:23

Mahendra JellaMahendra Jella

5,1501 gold badge31 silver badges38 bronze badges

1

Use:

ini_set['display_errors', 1];
ini_set['display_startup_errors', 1];
error_reporting[E_ALL];

This is the best way to write it, but a syntax error gives blank output, so use the console to check for syntax errors. The best way to debug PHP code is to use the console; run the following:

php -l phpfilename.php

answered May 4, 2016 at 19:14

Abhijit JagtapAbhijit Jagtap

2,6352 gold badges31 silver badges43 bronze badges

0

Set this in your index.php file:

ini_set['display_errors', 1];
ini_set['display_startup_errors', 1];
error_reporting[E_ALL];

answered Sep 26, 2017 at 12:32

Sumit GuptaSumit Gupta

5694 silver badges12 bronze badges

0

Create a file called php.ini in the folder where your PHP file resides.

Inside php.ini add the following code [I am giving an simple error showing code]:

display_errors = on

display_startup_errors = on

answered Mar 31, 2015 at 18:38

NavyaKumarNavyaKumar

5895 silver badges3 bronze badges

As we are now running PHP 7, answers given here are not correct any more. The only one still OK is the one from Frank Forte, as he talks about PHP 7.

On the other side, rather than trying to catch errors with a try/catch you can use a trick: use include.

Here three pieces of code:

File: tst1.php


Running this in PHP 7 will show nothing.

Now, try this:

File: tst2.php


File: tst3.php


Now run tst2 which sets the error reporting, and then include tst3. You will see:

Parse error: syntax error, unexpected end of file, expecting variable [T_VARIABLE] or ${ [T_DOLLAR_OPEN_CURLY_BRACES] or {$ [T_CURLY_OPEN] in tst3.php on line 4

answered May 20, 2017 at 12:07

PeterPeter

1,12815 silver badges32 bronze badges

1

I would usually go with the following code in my plain PHP projects.

if[!defined['ENVIRONMENT']]{
    define['ENVIRONMENT', 'DEVELOPMENT'];
}

$base_url = null;

if [defined['ENVIRONMENT']]
{
    switch [ENVIRONMENT]
    {
        case 'DEVELOPMENT':
            $base_url = '//localhost/product/';
            ini_set['display_errors', 1];
            ini_set['display_startup_errors', 1];
            error_reporting[E_ALL|E_STRICT];
            break;

        case 'PRODUCTION':
            $base_url = 'Production URL'; /* //google.com */
            error_reporting[0];
            /* Mechanism to log errors */
            break;

        default:
            exit['The application environment is not set correctly.'];
    }
}

answered Feb 1, 2017 at 7:16

If, despite following all of the above answers [or you can't edit your php.ini file], you still can't get an error message, try making a new PHP file that enables error reporting and then include the problem file. eg:

error_reporting[E_ALL];
ini_set['display_errors', 1];
require_once['problem_file.php'];

Despite having everything set properly in my php.ini file, this was the only way I could catch a namespace error. My exact scenario was:

//file1.php
namespace a\b;
class x {
    ...
}

//file2.php
namespace c\d;
use c\d\x; //Dies because it's not sure which 'x' class to use
class x {
    ...
}

answered Apr 24, 2015 at 2:55

jxmallettjxmallett

3,9771 gold badge27 silver badges35 bronze badges

2

If you somehow find yourself in a situation where you can't modifiy the setting via php.ini or .htaccess you're out of luck for displaying errors when your PHP scripts contain parse errors. You'd then have to resolve to linting the files on the command line like this:

find . -name '*.php' -type f -print0 | xargs -0 -n1 -P8 php -l | grep -v "No syntax errors"

If your host is so locked down that it does not allow changing the value via php.ini or .htaccess, it may also disallow changing the value via ini_set. You can check that with the following PHP script:

Chủ Đề