关于php:php5-fpm的php:display_errors无法与Nginx一起使用

display_errors for php5-fpm not working with nginx

我正在用php5-fpm运行nginx,并想启用display_errors
我正在运行虚拟主机,所以请帮助您启用display_errorsdisplay_startup_errors

我尝试修改/etc/php5/fpm/php.ini

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
;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

是否需要为每个不同的虚拟主机具有多个ini文件,vhost对于php配置有什么区别吗?

我也在尝试set_ini(),但是没有显示任何效果。 在php.ini文件中进行更改后,我重新启动了nginx和php5-fpm。


php.ini对于php-fpm无效。

如果使用的是php-fpm:必须在与Web应用程序关联的fpm池配置中提供配置更改。这些文件的位置取决于您的系统。可能的位置是:

  • /etc/php-fpm.d/mydomain.conf(如果已将内容整齐地设置)
  • /etc/php-fpm.conf(如果您仅将一个conf用于php-fpm)

您的配置路径与我的不同,因此请四处看看以了解其中的内容。如果/etc/php-fpm.d/中存在合适的conf,请不要在/etc/php-fpm.conf中进行更改。

如果您没有使用php-fpm:用正确的配置更新php.ini。

更正您的配置:在问题所示的配置中,您没有注释的文档,而不是提供了正确的设置。您最好撤消那些更改,因为PHP无法理解它们。

php-fpm的正确行是:

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

正常php的正确行是:

1
2
3
    ; enable display of errors
    display_errors = On
    display_startup_errors = On

建议:不要在生产环境中使用这些选项。最好的祝愿。


如果您具有/etc/php5/fpm/php.ini(在Debian中,Ubuntu样式配置中使用过),则对该文件的更改应生效,并且可以通过对特定的/etc/php5/fpm/pool.d/*.conf文件进行更改来进一步覆盖每个池的配置。


就我而言,Zend错误和NGinX-php5 fpm像这样工作:

只有我放入public/index.php

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

没有If(){...}

但是如果只放上面的代码,显示错误,将给出以下信息:

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

另一件事!设置此代码:

1
2
'display_not_found_reason' => true,
'display_exceptions'       => true,

在module.config.php中是这样的:

1
2
3
4
5
6
7
'view_manager' => array(
     'template_path_stack' => array(
         'album' => __DIR__ . '/../view',
         'display_not_found_reason' => true,
         'display_exceptions'       => true,
     ),
 ),

我在屏幕上看到一个error.log的所有错误:

1
2
3
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
esolver\TemplatePathStack->addPath(true) #1 /usr/local/nginx/html/ZendSkeletonApplication/vendor/zendframework/zendframework/library/Zend/Mvc/Service/ViewTemplatePathStackFactory.php(38): Zend\View
esolver\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

我在系统(Ubuntu 14.04)中没有将配置文件作为php-fpm触摸。