I have to put this at the top of all my scripts:

ini_set('display_errors', 1);
error_reporting(E_ALL | E_STRICT); 

which sux, because, well, i shouldn't have to --for starters, and when i go to upload my crap to my host, i'm sure that i'm going to forget to go through all my files and take that out first. But the settings in my php.ini file are not making a difference. I've tried changing the display_errors parameter to "on", "On", and "1", all to no avail. I also have had the error reporting section set to E_ALL, and now E_STRICT. Nothing is different... Here's my ini file:


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; error_reporting is a bit-field.  Or each number up to get desired error
; reporting level
; E_ALL             - All errors and warnings (doesn't include E_STRICT)
; E_ERROR           - fatal run-time errors
; E_RECOVERABLE_ERROR  - almost fatal run-time errors
; E_WARNING         - run-time warnings (non-fatal errors)
; E_PARSE           - compile-time parse errors
; E_NOTICE          - run-time notices (these are warnings which often result
;                     from a bug in your code, but it's possible that it was
;                     intentional (e.g., using an uninitialized variable and
;                     relying on the fact it's automatically initialized to an
;                     empty string)
; E_STRICT          - run-time notices, enable to have PHP suggest changes
;                     to your code which will ensure the best interoperability
;                     and forward compatibility of your code
; E_CORE_ERROR      - fatal errors that occur during PHP's initial startup
; E_CORE_WARNING    - warnings (non-fatal errors) that occur during PHP's
;                     initial startup
; E_COMPILE_ERROR   - fatal compile-time errors
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
; E_USER_ERROR      - user-generated error message
; E_USER_WARNING    - user-generated warning message
; E_USER_NOTICE     - user-generated notice message
;
; Examples:
;
;   - Show all errors, except for notices and coding standards warnings
;
;error_reporting = E_ALL & ~E_NOTICE
;
;   - Show all errors, except for notices
;
;error_reporting = E_ALL & ~E_NOTICE | E_STRICT
;
;   - Show only errors
;
;error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
;
;   - Show all errors, except coding standards warnings
;
error_reporting  =  E_STRICT

; Print out errors (as a part of the output).  For production web sites,
; you're strongly encouraged to turn this feature off, and use error logging
; instead (see below).  Keeping display_errors enabled on a production web site
; may reveal security information to end users, such as file paths on your Web
; server, your database schema or other information.
display_errors = 1

; Even when display_errors is on, errors that occur during PHP's startup
; sequence are not displayed.  It's strongly recommended to keep
; display_startup_errors off, except for when debugging.
display_startup_errors = Off

; Log errors into a log file (server-specific log, stderr, or error_log (below))
; As stated above, you're strongly advised to use error logging in place of
; error displaying on production web sites.
log_errors = On

; Set maximum length of log_errors. In error_log information about the source is
; added. The default is 1024 and 0 allows to not apply any maximum length at all.
log_errors_max_len = 1024

; Do not log repeated messages. Repeated errors must occur in same file on same
; line until ignore_repeated_source is set true.
ignore_repeated_errors = Off

; Ignore source of message when ignoring repeated messages. When this setting
; is On you will not log errors with repeated messages from different files or
; source lines.
ignore_repeated_source = Off

; If this parameter is set to Off, then memory leaks will not be shown (on
; stdout or in the log). This has only effect in a debug compile, and if
; error reporting includes E_WARNING in the allowed list
report_memleaks = On

;report_zend_debug = 0

; Store the last error/warning message in $php_errormsg (boolean).
track_errors = Off

; Disable the inclusion of HTML tags in error messages.
; Note: Never use this feature for production boxes.
;html_errors = Off

; If html_errors is set On PHP produces clickable error messages that direct
; to a page describing the error or function causing the error in detail.
; You can download a copy of the PHP manual from http://www.php.net/docs.php
; and change docref_root to the base URL of your local copy including the
; leading '/'. You must also specify the file extension being used including
; the dot.
; Note: Never use this feature for production boxes.
;docref_root = "/phpmanual/"
;docref_ext = .html

; String to output before an error message.
;error_prepend_string = "<font color=ff0000>"

; String to output after an error message.
;error_append_string = "</font>"

; Log errors to specified file.
;error_log = filename

; Log errors to syslog (Event Log on NT, not valid in Windows 95).
;error_log = syslog

Thanx

    E_STRICT is not included with E_ALL, so you need to specify both if you want all errors. Also, according to http://www.php.net/manual/en/configuration.php:

    ; Boolean values can be set to either:
    ;    true, on, yes
    ; or false, off, no, none

    So it looks like you want:

    display_errors  on
    error_reporting  E_ALL | E_STRICT
    

    PS: Don't forget to restart the web server after you make the changes. 🙂

      Also, putting that code in PHP scripts won't work if you have parse errors (the error will cause PHP to fail before it ever changed the error_reporting).

        Also, there is the auto_prepend setting in php.ini ... and, is the php.ini file being found? (Check phpinfo() to see what it has to say on the subject).

          Yeah, php's pulling the right file:
          Loaded Configuration File /etc/php.ini

          I will try those new settings. Thanx guys.

          ==Edit==
          Thanx again, this seems to be working now.

            4 months later
            Alex-Grim wrote:

            I have to put this at the top of all my scripts:

            ini_set('display_errors', 1);
            error_reporting(E_ALL | E_STRICT); 

            Thanx

            halojoy wrote:

            I wish more had learnt this good habbit
            of turning on errors while they try PHP scripting.
            Personally, and I am Not one Newbie ( 1.700 posts here ),
            I wouldnt dream of coding without getting error information On Screen.

            /regars
            halojoy

            <?php
            
            session_start(); // Turn on session variables If I will use them here
            
            ini_set('display_errors', true); // I want PHP Information On Screen
            error_reporting( E_ALL ); // ..and as much Debug Info I can get when I code
            
            // more
            // more
            
            echo 'My userID is: ' . $_SESSION['user_id'];
            echo '<br />' . "\n";
            echo 'and I debug my scripts with <u>full</u> <b>ERROR_REPORTING</b>!';
            
            
            exit( '<hr /><i>The End</i>' ); // I turn OFF my PHP Engine.
            
            ?>

            Regars 🙂
            halojoy

              Write a Reply...