PHP5 - show errors - php

SOLUTION:
Bunyamin's comment was my solution.
display_errors for php5-fpm not working with nginx
The second answer of that question mentioned the /etc/php5/fpm/pool.d/*.conf files, in my case /etc/php5/fpm/pool.d/www.conf
There I added
php_flag[display_errors] = on
and now it works.
QUESTION:
I have already turned on error reporting in the /etc/php5/cgi/php.ini file and no errors are shown.
If I add
error_reporting(E_ALL);
ini_set('display_errors', 1);
to my PHP code, all the errors are shown.
Why doesn't it work if I turn on error reporting in the php.ini files and don't add that code snippet? Shouldn't the php.ini file do the same as the code?
Webserver: Lighttpd
OS: Raspbian Jessie
EDIT:
phpinfo() shows that display_errors is set to Off, but in the php.ini file its turned On.
My php.ini file: http://pastebin.com/1qeK310n
Output of phpinfo(): http://www.file-upload.net/download-11264468/phpinfo.htm.html

I have four suggestions.
First of all, make sure that you are editing the correct php.ini file. You can see which php.ini file is used with the function phpinfo().
Simply create a file, phpinfo.php, with the following content. When you load the page (http://yoursite.com/phpinfo.php), you can see the details about your PHP configuration.
<?php
echo phpinfo();
Secondly, make sure you set error_reporting to E_ALL to get full debug information (Suggested only in development).
Thirdly, is there anywhere in your application that you set display_errors to 0. Sometimes, especially in frameworks, this property is set to 0.
Lastly, sometimes Apache is configured in a way that a custom php.ini file located in the root directory of your webpage can override your global configuration. Then the change in global php.ini file would not affect your application.

You have to scroll down to where the display_errors is set to OFF an then turn it on (Don't uncomment and set to on, scroll down)

Related

I can't get php errors to log to a custom log in CentOS 7.3 and PHP7

I have in a php.ini in public_html that has
display_errors = on
error_reporting = E_ALL | E_STRICT
log_errors on
error_log /home/account/public_html/error.log
phpinfo shows that the php.ini file in public_html is being loaded. The error_log file has 755 permissions and belongs to the same group:owner as all other files in public_html.
But, when I force php errors, no errors are displayed or logged. Errors are logged in /usr/local/apache/logs/error_log. And I've restarted apache.
Any ideas?
Try changing:
log_errors on
error_log /home/account/public_html/error.log
To
log_errors = on
error_log = /home/account/public_html/error.log
Next, near the top of your script, do:
echo php_ini_loaded_file(); // to make sure that you're editing the right php.ini
echo ini_get('log_errors'); // should be '1'
echo ini_get('error_log'); // should be path from php.ini
If the settings don't match what you set (I assumed you restarted Apache), check the rest of the php.ini as well as Apache VirtualHost configuration for another setting that may be overriding yours.
When you runphpInfo(), it will sometimes show a list of ini files that get loaded (not just your basic php.ini. One of them could also contain an override.
Finally if none of that works, you could set error-logging in-script with ini_set(). Just be aware that if that script itself has an error, this setting may not have the chance to take effect so it's best to do it in a script separate from your main, and require it
main.php
require_once('./init.php);
// ... your regular script
init.php
ini_set('log_errors', '1');
ini_set('error_log', '/path/to/errors.log');

PHP not showing all errors despite E_ALL being set

In my php.ini file I have the following line set:
error_reporting = E_ALL
display_errors is also turned on in the ini file.
However, this does not appear to be working correctly because I can only get PHP to display strict errors when I add the following to my PHP file:
ini_set('display_errors', 1);
error_reporting(-1);
I'm using Wampserver, why is this happening? I want PHP to display all errors no matter what the severity without having to include this code in every file.
WAMPServer, has 2 php.ini files
In the \wamp\bin\php\php{version}\ folder. This controls ONLY PHP CLI.
If you want to effect the Apache web server environment you should always use the menus to get to the correct file, as it changes as you change Apache/PHP versions
So
left click wampmanager->PHP->php.ini
and this will edit the correct file for the current Apache/PHP activated.
But by default error reporting and XDEBUG should be turned on

PHP errors in a new MAMP

I download absolutely new, the last version of MAMP 3.5.
I go to phpInfo and it says the PHP version is 7.0.0 and Configuration File (php.ini) Path is: /Applications/MAMP/bin/php/php7.0.0/conf.
I go to php.ini in that path and change errors to on: display_errors = On. I check that: error_reporting = E_ALL.
I Stop Servers and Start Servers. I reload the page in the browser. I check phpInfo and now display_errors is on.
I do not see the errors.
I have checked all the solutions in the web, just to name a few:
MAMP Config help, display PHP errors
Why MAMP doesn't display errors?
how to display errors on MAMP?
I tried everything and I do not see PHP errors. What else can I do?
Preface your PHP code with this. It will force error display.
ini_set('display_errors', 'On');
error_reporting(E_ALL);
Also check your .ini files in the following locations:
Applications/MAMP/bin/php/(PHP version)/conf/php.ini
Applications/MAMP/conf/php/(PHP version)/conf/php.ini
They should both be set for:
display_errors = On
EDIT: I should clarify this, as it may be a point of confusion: You should restart your MAMP server when the changes are complete.
I changed my .ini files located as Bangkoian stated above. In MAMP PRO 3.5 there is an additional or third .ini file that needs to be changed.
This file can only be accessed through the MAMP Pro File menu . I'm not sure where it actually is in the actual file structure.
Access the .ini by: Command +4 or
File > Edit Template > PHP > Version Your using
Find around line 271:
error_reporting = MAMP_error_reporting_MAMP
and change to E_ALL
error_reporting = E_ALL
under error_reporting look for display_errors and change:
display_errors = MAMP_display_errors_MAMP
and change to On
display_errors = On
You'll end up needing to change these line in 3 Different places
Applications/MAMP/bin/php/(PHP version)/conf/php.ini
Applications/MAMP/conf/php/(PHP version)/conf/php.ini
and through MAMP Pro itself:
Command +4 or
File > Edit Template > PHP > Version Your using
After the third method was added it worked as expected, I'm also using PHP 7. Make sure Debugger Activate Xdebug it checked under the PHP tab.

PHP won't display any errors

I have a PHP page that's erroring out somewhere (it loads blank white, no title or anything), but I cannot for the life of me get it to display errors. I have the following in my files, but the page still loads blank white. What can I do to get PHP to display errors? This is on PHP 5.5 on my own server, and I am editing the correct php.ini file (according to phpinfo()).
php.ini:
display_errors = on
error_reporting = E_ALL
.htaccess:
php_value error_reporting -1
Specific file in question:
ini_set('display_errors',1);
error_reporting(E_ALL);
Make sure to add it to the correct php.ini file. Some web hosters have configured their server such that a php.ini in the same directory as the html of php file will be executed. But this is not the default. If you are in Linux, try putting it into /etc/php5/apache2/php.ini or search on your harddisk for any php.ini.
Turns out display_errors was already set below my own edits, so php.ini was using the default value of Off instead of my value. Deleted my edits and fixed the spots that needed it, problem resolved.

MAMP Config help, display PHP errors

I am running the latest version of MAMP on Snow Leopard.
My php.ini file has been configured to display errors. display_errors = on. The phpinfo(); page displays the status of error reporting, it is on. I have restarted my web server several times.
I've searched through Google, and I cannot find any similar problem. Everyone just says to do exactly what I have done, but it is not working. The pages will just remain blank, (with no reporting), if I intentionally place errors.
Any thoughts as to what the problem may be?
For any future posters who run into this issue...
I was having the same issue and found that I was making changes to the wrong php.ini files. Run phpinfo and find the path to the active php.ini file to make sure you're editing the correct one.
On my installation of mamp there were multiple instances of the /conf directory with php.ini files. The php.ini files I needed were located in the /bin/php/php[version#]/conf directory and not the MAMP/conf directory.
Exact path to the php.ini file I needed to edit:
Applications/MAMP/bin/php/php5.4.10/conf/php.ini
Change display_errors = Off to display_errors = On
In addition to the display_errors directive, which has to be set to On, you might have to configure error_reporting.
For instance, you can use this in your php.ini file :
error_reporting = E_ALL
Another should, useful to test, might be to place this kind of portion of PHP code at the beginning of your script :
error_reporting(E_ALL);
ini_set('display_errors', 'On');
This is useful when you don't have access to php.ini and/or just want to test quickly, without having to restart the webserver.
As a sidenote, when it comes to displaying errors, the Xdebug extension is really great : when it's installed/enabled/configured, instead of just having an error message, you'll get the full stack-trace, which is much more useful ;-)
I recently experienced the same problem - in my case I had downloaded a client's Wordpress site from their live server that turned out to have been tampered with by malicious script insertion that was overriding the error reporting in order to escape detection.
A little late to help the OP(!), but perhaps of use to future searchers.
There might have a .htaccess file in a directory that overrides the display_errors setting set in php.ini. From your post I assume you didn't explicitly add this but a few frameworks do this by default so might be added that way. Look for a line like this in your .htaccess file:
php_value display_errors 0
and change the value to 1.
If you have several php sdks with several versions, first make it sure you are editing correct php.ini file. If you were right add this two lines at the beginning of the code.
error_reporting(E_ALL);
ini_set('display_errors', 'On'); // or ini_set('display_errors', 1);
Here's a twist to the same answer. I had the same issues, just copied and pasted the ini path from the php info page and still same problems...
turns out I made a syntax mistake when I edited my 'error_reporting' block in the php.ini.
I had E_NOTICE rather than ~E_NOTICE.
:(
So mistakes can happen in the php.ini if you were editing it and totally forgot you edited something.

Categories