Pranav
Pranav

Reputation: 2172

display_errors for php5-fpm not working with nginx

I am running nginx with php5-fpm and want to enable the display_errors. I am running a virtual host, so please help in making a way to enable display_errors , display_startup_errors.

I tried modifying /etc/php5/fpm/php.ini.

;display_errors
Default Value: On
Development Value: On
;Production Value: Off 
;display_startup_errors
Default Value: On
Development Value: On
;Production Value: Off
;error_reporting
Default Value: E_ALL
Development Value: E_ALL
;Production Value: E_ALL & ~E_DEPRECATED
;html_errors
Default Value: On
Development Value: On
;Production value: Off
;log_errors
Default Value: On
Development Value: On
;Production Value: On

Is it require to have multiple ini files for each different virtual host, does vhost makes any difference for php configuration ?

I am also trying set_ini() , but it is not showing any effect. And I restarted nginx and php5-fpm after making changes in php.ini file.

Upvotes: 32

Views: 88339

Answers (5)

Herahadi An
Herahadi An

Reputation: 346

In ubuntu 22.04 you just need to add these lines on the top of your PHP file

<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
?>

Upvotes: 0

v010dya
v010dya

Reputation: 5848

An update for PHP-FPM 7 (under Debian)

  1. Go to /etc/php/[VERSION]/fpm/pool.d
  2. Edit the file www.conf (or in case if you have set up other pools, edit those).
  3. You want php_flag[display_errors] = on
  4. Restart with sudo service php[VERSION]-fpm restart

Upvotes: 3

vlad
vlad

Reputation: 313

In my case Zend errors and NGinX - php5 fpm, work like this:

Only I put in public/index.php

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

Without If(){...}

But If only to put above code, display error, will give this:

Parse error: syntax error, unexpected '}', expecting ',' or ';' in /usr/local/nginx/html/ZendSkeletonApplication/module/Album/src/Album/Controller/AlbumController.php on line 12

Another thing! Set up this code:

'display_not_found_reason' => true,
'display_exceptions'       => true,

in module.config.php like this:

'view_manager' => array(
     'template_path_stack' => array(
         'album' => __DIR__ . '/../view',
         'display_not_found_reason' => true,
         'display_exceptions'       => true,
     ),
 ),

I get all errors of an error.log on screen:

Fatal error: Uncaught exception 'Zend\View\Exception\InvalidArgumentException' with message 'Invalid path provided; must be a string, received boolean' in /usr/local/nginx/html/ZendSkeletonApplication/vendor/zendframework/zendframework/library/Zend/View/Resolver/TemplatePathStack.php:201 Stack trace: #0 /usr/local/nginx/html/ZendSkeletonApplication/vendor/zendframework/zendframework/library/Zend/View/Resolver/TemplatePathStack.php(149): Zend\View\Resolver\TemplatePathStack->addPath(true) #1 /usr/local/nginx/html/ZendSkeletonApplication/vendor/zendframework/zendframework/library/Zend/Mvc/Service/ViewTemplatePathStackFactory.php(38): Zend\View\Resolver\TemplatePathStack->addPaths(Array) #2 [internal function]: Zend\Mvc\Service\ViewTemplatePathStackFactory->createService(Object(Zend\ServiceManager\ServiceManager), 'viewtemplatepat...', 'ViewTemplatePat...') #3 /usr/local/nginx/html/ZendSkeletonApplication/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php(939): call_user_func(Array, Object(Zend in /usr/local/nginx/html/ZendSkeletonApplication/vendor/zendframework/zendframework/library/Zend/ServiceManager/ServiceManager.php on line 946

I didn't touch config file as php-fpm in system (Ubuntu 14.04).

Upvotes: 7

Chris Burgess
Chris Burgess

Reputation: 3631

If you have /etc/php5/fpm/php.ini (used in Debian, Ubuntu style config) then changes to this file should take effect, and that configuration may be further overridden per pool by making changes to specific /etc/php5/fpm/pool.d/*.conf files.

Upvotes: 12

Kevin A. Naud&#233;
Kevin A. Naud&#233;

Reputation: 4060

The php.ini does nothing for php-fpm.

If you are using php-fpm: You must provide the configuration change in the fpm pool config associated with your web application. Where these are located depends on your system. The probably locations are:

  • /etc/php-fpm.d/mydomain.conf (if things have been set up neatly)
  • /etc/php-fpm.conf (if you are only using one conf for php-fpm)

Your config paths are different from mine, so poke around to see what you have in there. Don't make changes in /etc/php-fpm.conf if a suitable conf exists in /etc/php-fpm.d/.

If you are not using php-fpm: Update php.ini with the correct configuration.

Correct your configuration: In the configuration shown in the question, you have uncommented documentation rather than provided the correct settings. You had better undo those changes, because PHP won't understand them.

The correct lines for php-fpm are:

    ; enable display of errors
    php_flag[display_errors] = on
    php_flag[display_startup_errors] = on

The correct lines for normal php are:

    ; enable display of errors
    display_errors = On
    display_startup_errors = On

Advice: Do not use these options in a production environment. Best wishes.

Upvotes: 49

Related Questions